定义
- 定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户;
- 可以处理算法中有大量 if ... else ... 的情况;
适用场景
- 系统有很多类,而他们的区别仅仅在于他们的行为不同;
- 一个系统需要动态地在几种算法中选择一种 ;
优点
- 符合开闭原则;
- 可以避免使用多重条件转移语句;
- 提高算法的保密性和安全性;
缺点
- 客户端必须知道所有的策略类,并自行决定使用哪一个策略类;
- 产生很多策略类;
相关设计模式
- 策略模式(负责接收创建好的对象,产生不同的行为) & 工厂模式(负责创建对象);
- 策略模式(客户端需要知道使用哪个策略) & 状态模式(客户端不需要知道具体状态,状态会自动转换);