1. 定义
策略模式把 "干什么" 和 "怎么干" 解耦合,将干的算法抽象出来,让算法修改替换增加的时候互不影响.2. 使用场景干一件事情有 n 种干法(策略),干法们是平等的.
3. 优缺点
1)算法修改,替换和增加的时候互不影响;但是客户端有影响,比如新加算法,客户就要知道依赖于新的算法类.
2)客户端决定什么情况下使用什么策略,系统的灵活性高;但客户端需要理解所有具体算法间的区别,以便选择合适的算法,在一定程度上增加了客户端的使用难度.
4. 和其他模式区别
1)和状态模式的区别
策略模式和状态模式做得是同一件事:把干什么和怎么干去耦合.
策略模式和状态模式区别:策略模式 Context 设置策略择;而状态模式 Context 和具体状态类都会设置状态.状态模式的每个状态类中需要包含 Context 和其他状态类,以便状态类切换状态,因此 Context 和状态类之间存在一种双向的关联关系.
2)简单工厂的区别:点击打开链接
工厂模式是创建型模式 ,客户端和对象创建解耦合,返回一个产品.
策略模式是对象行为型模式 ,客户端和算法执行解耦合,执行一个算法.