You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

24 lines
1.2 KiB

## 介绍
策略模式是一种行为模式也是替代大量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]]