定义
策略模式将可变的部分从程序中抽象分离成算法接口,在该接口下分别封装一系列算法实现并使它们可以相互替换,从而导致客户端程序独立于算法的改变。
开发推荐的方式
复合优先于继承
多用组合,少用继承
设计原则:
面向接口编程;
将共同的;
多用组合,少用继承。
实现:
- 通过分离变化得出的策略接口Strategy;
- Strategy的实现类;
- 客户程序(抽象)中有一个Strategy;
- 在客户程序(实现)中选择、组装正确的strategy实现
适用场景
- 许多相关的类仅仅是行为差异
- 运行时选取不同的算法变体
- 通过条件语句在多个分支中选取