策略模式
行为型 behavioral 允许算法独立性地随使用者改变
设想这种场景:一份数据可能会做不同的处理,或者系统需要动态地在多个算法中选择一个
这种情况下,数据一般是相对不易改变的部分,这里指的是数据的结构,而非具体的数值。对数据的处理逻辑可能会经常改变。
如果使用硬编码实现逻辑,需要使用大量条件选择语句
会破坏系统的开闭原则 Open/Closed Principle,导致低扩展性和维护困难
另外还可以降低用户的心智负担,用户不用了解复杂的算法数据结构 同时增加了算法的安全性
还是那句话:在不常变和常变之间做出区分,引入中间抽象把它们隔离开。
把数据的处理提取成接口,剥离处理方法的具体实现,这种方式被成为策略模式。
UML


- Context: Context class 上下文类
- Stragegy: Abstract strategy class 抽象策略类
- ConcreteStrategy: Concrete strategy