用途
完成一个任务有多种不同的方法,不同的情况需要采取不同的方法,这种情况下应该将不同的算法独立起来,一方面使算法独立于算法的使用者。
定义
定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。
结构
- Context: 使用环境
- Strategy: 算法接口
- ConcreteStrategy: 具体算法实现
类图
时序图
优缺点
优点
- 算法之间相互独立,符合开闭原则。
- 避免使用多重条件,直接绑定接口的实现就确定了具体的实现。
缺点
- 使用者必须了解所有的算法,才能选择使用哪种。
- 如果算法种类比较多,会大大增加类的数量。