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