策略模式
2020-11-25 本文已影响0人
Happyday_5fce
概述
用于算法的自由切换和扩展,它是应用较为广泛的设计模式
对应于解决某一问题的一个算法族,允许用户从该算法族中任选一个算法来解决问题,同时可以方便的更换算法或者增加新的算法。
工厂模式是解耦对象的创建和使用,观察者模式是解耦观察者和被观察者。策略模式跟两者类似,也能起到解耦的作用,不过,它解耦的是策略的定义、创建、使用这三部分。接下来,我就详细讲讲一个完整的策略模式应该包含的这三个部分。
缺点
客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
策略模式讲造成系统产生很多具体策略类。
模板模式这个问题就不明显
优点
策略模式提供了对开闭原则的完美支持,用户可以不修改原有系统的基础上选择算法或行为,也可以灵活地增加新的算法或者行为。
策略模式提供了管理相关算法族的办法。策略类的等级结构定义了一个算法或者行为族,恰当使用继承可以把公共代码移到抽象策略类,从而避免重复代码。有点像模板模式。只是比模板模式多了一个context
避免多重条件选择语句。把算法的使用和定义分开,独立变化
结构
支付方式 可以封装成策略类。
退费系统可以用策略模式或者模板模式
商场促销方式,打折、满减
订单中台退款策略