1.策略模式概念

策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,此模式让算法的变化独立于使用算法的客户。从而让程序结构更灵活,具有更好的扩展性和维护性
2.策略模式结构图
PHP设计模式之策略模式结构图
3.策略模式角色说明
    抽象策略(Strategy)角色:定义所有支持的算法的公共接口。通常是以一个接口或抽象来实现。Context使用这个接口来调用其ConcreteStrategy定义的算法。
    具体策略(ConcreteStrategy)角色:以Strategy接口实现某具体算法
    环境(Context)角色:持有一个Strategy类的引用,用一个ConcreteStrategy对象来配置
4.策略模式实例 

';  }}  /** * 具体策略角色B */class ConcreteStrategyB implements Strategy {    public function algorithmInterface() {    echo 'algorithmInterface B
';  }}  /** * 具体策略角色C */class ConcreteStrategyC implements Strategy {    public function algorithmInterface() {    echo 'algorithmInterface C
';  }}  /** * 环境角色 */class Context {  /* 引用的策略 */  private $_strategy;    public function __construct(Strategy $strategy) {    $this->_strategy = $strategy;  }    public function contextInterface() {    $this->_strategy->algorithmInterface();  }  }  /** * 客户端 */class Client {    /**   * Main program.   */  public static function main() {    $strategyA = new ConcreteStrategyA();    $context = new Context($strategyA);    $context->contextInterface();      $strategyB = new ConcreteStrategyB();    $context = new Context($strategyB);    $context->contextInterface();      $strategyC = new ConcreteStrategyC();    $context = new Context($strategyC);    $context->contextInterface();  }  }  Client::main();?>