策略模式

转载:策略模式

混合模式

UNL类图

  • Context向外暴露使用策略的接口,设置使用哪一个策略。

  • Strategy策略基类,所有的策略类都继承自该类

  • ConcreteStrategyA、ConcreteStrategyB具体的策略类,用来实现具体的解决方案。

适用场合

适合于一个问题有多种解决方案。比如排序时可以选择快排,堆排,冒泡,选择,插入等。主要解决if...else带来的复杂和难以维护。

关键代码实现同一个接口

注意事项

如果一个系统策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。

应用实例:

  • 诸葛亮的锦囊妙计,每一个锦囊就是一个策略

  • 出行方式,自行车,汽车,步行,每一种出行方式都是一个策略。

  • 常见的鸭子策略模式:每一个具体的鸭子是一种策略,每种鸭子都有不同的表现形式(飞行高度,叫声大小等等)。

优缺点:

优点

  • 策略可以自由切换,

  • 避免使用多重条件判断(if...else)

  • 扩展性好

缺点

  • 策略类会很多

  • 所有策略类都需要对外暴露

原文地址:https://www.cnblogs.com/mmmmmmmmm/p/15093268.html