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