PHP设计模式-策略模式Strategy

1.策略模式概念
策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,此模式让算法的变化独立于使用算法的客户。从而让程序结构更灵活,具有更好的扩展性和维护性
2.策略模式结构图
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();
?>

名称栏目:PHP设计模式-策略模式Strategy
浏览路径:http://bzwzjz.com/article/ihgeps.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都网站制作 成都网站建设 成都定制网站建设 外贸网站设计方案 四川成都网站设计 手机网站制作 营销型网站建设 成都网站设计 成都网站建设 品牌网站建设 古蔺网站建设 成都网站设计制作公司 成都网站设计 响应式网站设计方案 成都网站建设 定制网站设计 成都响应式网站建设公司 企业手机网站建设 高端网站设计 成都品牌网站设计 成都网站制作 网站建设