心胸决定格局,眼界决定境界...

策略模式

1.策略模式类似于简单工厂,策略模式针对算法,但是算法完成的任务相同,只是实现不同,它可以以相同的方式调用所有的算法,而简单工厂针对产生对象。

2.策略模式: 上下文类包含一个维护策略抽象类对象,需要哪种策略,就产生哪种策略。

 

class  Strategy

{

virtual double action() = 0;

};

class  Strategy1 : Strategy;

class  Strategy2 : Strategy2;

class  Context

{

private:   Strategy  m_strategy;

     Context(Strategy tmp)

  {

       m_strategy = tmp;

  }

  public:  double    interface() 

    {

       return  m_strategy.action();

     }

}

 

//客户端

 

Context      context = new Context(new Strategy1);

context.interface();

 

//策略与简单工厂结合

可以在Context 策略里,利用简单工厂产生不同的子类对象,由策略内部维护的对象维护各子类对象。

优点在于,switch case 之类的逻辑可以不用客户端,使客户端基本不用与算法有任何接触。

posted @ 2013-12-26 23:51  WELEN  阅读(127)  评论(0)    收藏  举报