- 策略模式的定义:
定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。
使这些算法在客户端调用的时候能够互不影响的变化。 - 组成:
抽象策略角色: 通常由一个接口或抽象类实现。
具体策略角色: 包装了相关算法和行为。
环境角色:持有一个策略类的引用,最终给客户端调用的。 - 实现:
使用策略模式可以把 行为和环境分割开来。
环境类负责维持和查询行为类,算法和环境独立开来,算法的修改都不会影响环境和客户端。 - 编写步骤:
对策略对象 定义一个公共接口。
编写策略类,该类 实现了上面的公共接口。
在使用策略对象的类中 保存一个对策略对象的引用。
在策略对象的类中,实现对 策略对象的set和get方法的注入或者使用构造方法完成赋值。 - 典型例子:
Collections类。 - 策略模式缺点:
客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
造成很多策略类。 - 解决方案:
采用 工厂方法。