设计模式学习笔记——策略模式

我觉得策略模式与工厂方法模式极其相似!

策略模式:


工厂方法模式:



如果单从图来看,看不出有何相似之处。但看看调用方法就知道了:


策略模式:

    Context context = new Context();
    AbstractStrategy strategy;
    //采用哪种策略,由调用方决定
    strategy = new ConcreteStrategyA();
    context.setStrategy(strategy);
    context.algorithm();

工厂方法模式:

    IFactory factory;
    //采用哪个工厂,由调用方法决定
    factory = new ConcreteFactoryA();
    IProduct product = factory.Create();

策略模式里有个上下文类,与工厂类非常像。在应用这两种模式的代码里,都是由调用方决定采用哪种策略,或者应用哪个工厂。策略代码和工厂代码本身,符合开闭原则,要改就改调用方。当然,这也可以看成是缺点,因为调用方要对策略和工厂非常了解。


posted on 2014-02-11 21:31  左直拳  阅读(168)  评论(0编辑  收藏  举报

导航