策略模式

来源:互联网 发布:如何查看mac硬盘容量 编辑:程序博客网 时间:2024/06/01 09:28

何谓策略模式?

      本人的理解是:一个对象要完成一件事情,有很多种实现策略。为了把对象与实现方式解耦,可以使用策略模式(Strategy)



模式的组成

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




写一段策略模式的伪代码 :


Interface 砍树类(策略接口){砍树();}class 锯子砍树 implements 砍树类---具体的策略类{砍树(){用锯子锯……}}class 电锯砍树 implements 砍树类---具体的策略类{砍树(){用电锯锯……}}class 指甲刀砍树 implements 砍树类---具体的策略类{砍树(){用指甲刀剪……}}class 环境类(context)---一个环境类,来"智能"选择具体的策略{private 砍树类(一个引用)设置策略方法(砍树的具体类){砍树类 = 砍树的具体类}我要砍树(){砍树类.砍树();}}