## 介绍 策略模式是一种行为模式,也是替代大量ifelse的方式。用于同类可替代的行为逻辑场景。例如:不同类型的交易方式(信用卡、支付宝、微信),生成唯一ID策略(UUID、自增、DB+Redis、雪花算法等)都可以用策略模式进行行为包装,供给外部使用。 看起来和简单工厂模式没太大区别,**从工厂模式的代码中可以看到 工厂模式主要是返回的接口实现类的实例化对象,最后返回的结果是接口实现类中的方法,而策略模式是在实例化策略模式的时候已经创建好了,我们可以在策略模式中随意的拼接重写方法,而工厂模式是不管方法的拼接这些的,他只关注最后的结果,不注重过程,而策略模式注重的是过程。 ## 代码例子 模拟购物后使用各类优惠的场景(满减、直减、折扣、N元购) 用if-else实现 ![[Snipaste_2023-02-12_14-12-35.png]] 用策略实现 ![[Snipaste_2023-02-12_14-13-15.png]] ![[Snipaste_2023-02-12_14-13-43.png]] ![[Snipaste_2023-02-12_14-14-10.png]] ![[Snipaste_2023-02-12_14-14-36.png]] ![[Snipaste_2023-02-12_14-14-54.png]] ![[Snipaste_2023-02-12_14-15-25.png]] ![[Snipaste_2023-02-12_14-15-41.png]]