java设计模式之策略模式

来源:互联网 发布:j20弹仓 知乎 编辑:程序博客网 时间:2024/05/29 14:39

将算法封装成类,可以在运行时动态的改变行为。

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。


适用情况:

1,许多相关的类,仅仅是行为有异。系统只需要在几种算法中动态的选择一种即可

2,需要使用算法的不同变体。例如,可能会定义一些反映不同的空间 /时间权衡的算法。当这些变体实现为一个算法的类层次时 ,可以使用策略模式。

3,算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。

4,一个类定义了多种行为 , 并且这些行为在这个类的操作中以多个条件语句的形式出现。将相关的条件分支移入它们各自的Strategy类中以代替这些条件语句。


基本结构:


环境类(Context):用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。
抽象策略类(Strategy):定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。
具体策略类(ConcreteStrategy):以Strategy接口实现某具体算法。


例子:



http://blog.csdn.net/hguisu/article/details/7558249

0 0