加入收藏 | 设为首页 | 会员中心 | 我要投稿 92站长网 (https://www.92zz.com.cn/)- 语音技术、视频终端、数据开发、人脸识别、智能机器人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php Builder建造器模式学习手记

发布时间:2023-11-04 11:31:50 所属栏目:PHP教程 来源:未知
导读:   思路:既然星际的画面由几个部分组成:地图(就是地形和矿产),建筑,部队。那么我们把他们看成是零件,组装起来就是最后的产品(整个画面)。



  建造器(Builder)模式示例:
  思路:既然星际的画面由几个部分组成:地图(就是地形和矿产),建筑,部队。那么我们把他们看成是零件,组装起来就是最后的产品(整个画面)。
 
  建造器(Builder)模式示例:
 
   代码如下
 
  1
 
  2 //规范制造各个零件的接口
 
  3 interface Builder
 
  4 {
 
  5   //制造地图零件
 
  6   public function buildMapPart();
 
  7   //制造建筑零件
 
  8   public function buildBuildingPart();
 
  9   //制造部队零件
 
  10   public function buildArmyPart();
 
  11   //组装零件
 
  12   public function getResult();
 
  13 }
 
  14 //实际建造器类,比如初始化某个任务关
 
  15 class ConcreteBuilder implements Builder
 
  16 {
 
  17   //制造地图零件
 
  18   public function buildMapPart()
 
  19   {
 
  20   //根据任务的设定画上地图
 
  21   echo '地图零件n';
 
  22   }
 
  23   //制造建筑零件
 
  24   public function buildBuildingPart()
 
  25   {
 
  26   //根据任务的设定画上建筑,包括玩家的和敌人的
 
  27   echo '建筑零件n';
 
  28   }
 
  29   //制造部队零件
 
  30   public function buildArmyPart()
 
  31   {
 
  32   //根据任务的设定画上部队,包括玩家的和敌人的
 
  33   echo '部队零件n';
 
  34   }
 
  35   //组装零件
 
  36   public function getResult()
 
  37   {
 
  38   //将所有的东西叠加和处理,形成初始化画面
 
  39   echo '组装零件n';
 
  40   }
 
  41 }
 
  42 //监督类,也就是控制绘制流程的类
 
  43 class Director
 
  44 {
 
  45   //私有属性,确定使用的建造器
 
  46   private $builder;
 
  47   //构造方法,参数为选定的建造器对象
 
  48   public function __construct($builder)
 
  49   {
 
  50     //确定使用的建造器
 
  51     $this->builder = $builder;
 
  52   }
 
  53   //负责建造流程的方法,调用建造器对象的方法,制造所有零件
 
  54   public function buildeAllPart()
 
  55   {
 
  56     //制造地图零件
 
  57     $this->builder->buildMapPart();
 
  58     //制造建筑零件
 
  59     $this->builder->buildBuildingPart();
 
  60     //制造部队零件
 
  61     $this->builder->buildArmyPart();
 
  62   }
 
  63 }
 
  64 //假设根据任务关,初始化我们需要的实际建造器对象
 
  65 $concreteBuilder = new ConcreteBuilder();
 
  66 //初始化一个监督对象
 
  67 $director = new Director($concreteBuilder);
 
  68 //制造所有零件
 
  69 $director->buildeAllPart();
 
  70 //最后让建造器组装零件,生成画面
 
  71 $concreteBuilder->getResult();
 
  72 ?>
 
  用途总结:建造器模式可以将流程和细节分离,各司其职。
 
  实现总结:需要一个建造器接口或者抽象类,负责规范各个方法,比如上面的Builder。然后让实际的建造器类去实现所有的方法,比如上面的ConcreteBuilder。同时需要负责流程管理的监督类,比如上面的Director,负责调用建造器的各个零件制造方法。最后让建造器去组装所有的零件
 

(编辑:92站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章