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.

1.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

介绍

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