设计模式-策略模式理解

同一个行为,用不同的方案可以去完成,这个方案我们可以叫他策略或者规则;通过对方案一个个的独立封装,结构更清晰,而且可以消除条件语句;这种模式就是用来封装算法的,比如在不同时间使用不同的业务规则;

简单结构:

  1. 一个基础类:可以是抽象类也可以是接口
  2. 多个策略(算法或规则)类:继承上诉基础类
  3. 一个能判断使用哪一个策略的Context类:在这里调用相应的策略对象,这个类;与工厂类比较相似

举个栗子

strategy = $strategy;
    }
    public function contextInterface()
    {
        $this->strategy->AlgorithmInterface();
    }
}
$context = new Context(new ConcreteStrategyA());
$context->contextInterface();
$context = new Context(new ConcreteStrategyB());
$context->contextInterface();
$context = new Context(new ConcreteStrategyC());
$context->contextInterface();

你可能感兴趣的:(设计模式-策略模式理解)