策略模式
一、定义
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式的变化独立于使用算法的客户。
二、例子
策略模式就是用来封装算法的,但在实践的时候,我们可以用它来封装几乎任何类型的规则。例如:
1.出门出行的方式,骑行,公交,地铁,火车,飞机,汽车,火箭等。
2.商城物品促销策略,打折,满减,返利等。
三、结构
其中,Context是上下文,用一个ConcreteStratege来配置,维护一个对于Strategy对象的引用;Strategy是策略类,用于定义所有支持算法的公告接口;ConcreteStrategy是具体策略类,封装了具体的算法和行为,继承于Strategy。
代码示例:
运行结果:
四、优点
1.算法可以自由切换。
2.避免多重判断。
3.扩展性良好,增加策略只需实现接口即可。
4.简化单元测试。
五、缺点
1.策略类多,重用性低。
2.要暴露全部策略类。