国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

php Builder建造器模式學習筆記

2024-09-04 11:43:40
字體:
來源:轉載
供稿:網友

星際里面有不少的任務關,也可以自己編輯地圖,畫面上有各種地形,建筑和部隊,存在一個問題,初始化畫面的流程很亂,待解決的問題:完成初始化畫面的工作,同時盡量減少各種繪制細節的耦合.

思路:既然星際的畫面由幾個部分組成,地圖(就是地形和礦產),建筑,部隊,那么我們把他們看成是零件,組裝起來就是最后的產品(整個畫面).

建造器(Builder)模式示例:

  1. <?php 
  2.  
  3. //規范制造各個零件的接口 
  4.  
  5. interface Builder 
  6.  
  7.  
  8.   //制造地圖零件 
  9.  
  10.   public function buildMapPart(); 
  11.  
  12.   //制造建筑零件 
  13.  
  14.   public function buildBuildingPart(); 
  15.  
  16.   //制造部隊零件 
  17.  
  18.   public function buildArmyPart(); 
  19.  
  20.   //組裝零件 
  21.  
  22.   public function getResult(); 
  23.  
  24.  
  25. //實際建造器類,比如初始化某個任務關 
  26.  
  27. class ConcreteBuilder implements Builder 
  28.  
  29.  
  30.   //制造地圖零件 
  31.  
  32.   public function buildMapPart() 
  33.  
  34.   { 
  35.  
  36.   //根據任務的設定畫上地圖 
  37.  
  38.   echo '地圖零件n'
  39.  
  40.   } 
  41.  
  42.   //制造建筑零件 
  43.  
  44.   public function buildBuildingPart() 
  45.  
  46.   { 
  47.  
  48.   //根據任務的設定畫上建筑,包括玩家的和敵人的 
  49.  
  50.   echo '建筑零件n'
  51.  
  52.   } 
  53.  
  54.   //制造部隊零件 
  55.  
  56.   public function buildArmyPart() 
  57.  
  58.   { 
  59.  
  60.   //根據任務的設定畫上部隊,包括玩家的和敵人的 
  61.  
  62.   echo '部隊零件n'
  63.  
  64.   } 
  65.  
  66.   //組裝零件 
  67.  
  68.   public function getResult() 
  69.  
  70.   { 
  71.  
  72.   //將所有的東西疊加和處理,形成初始化畫面 
  73.  
  74.   echo '組裝零件n'
  75.  
  76.   } 
  77.  
  78.  
  79. //監督類,也就是控制繪制流程的類 
  80.  
  81. class Director 
  82.  
  83.  
  84.   //私有屬性,確定使用的建造器 
  85.  
  86.   private $builder
  87.  
  88.   //構造方法,參數為選定的建造器對象 
  89.  
  90.   public function __construct($builder
  91.  
  92.   { 
  93.  
  94.     //確定使用的建造器 
  95.  
  96.     $this->builder = $builder
  97.  
  98.   } 
  99.  
  100.   //負責建造流程的方法,調用建造器對象的方法,制造所有零件 
  101.  
  102.   public function buildeAllPart() 
  103.  
  104.   { 
  105.  
  106.     //制造地圖零件 
  107.  
  108.     $this->builder->buildMapPart(); 
  109.  
  110.     //制造建筑零件 
  111.  
  112.     $this->builder->buildBuildingPart(); 
  113.  
  114.     //制造部隊零件 
  115.  
  116.     $this->builder->buildArmyPart(); 
  117.  
  118.   } 
  119.  
  120.  
  121. //假設根據任務關,初始化我們需要的實際建造器對象 
  122.  
  123. $concreteBuilder = new ConcreteBuilder(); 
  124.  
  125. //初始化一個監督對象 
  126.  
  127. $director = new Director($concreteBuilder); 
  128.  
  129. //制造所有零件 
  130.  
  131. $director->buildeAllPart(); 
  132.  
  133. //最后讓建造器組裝零件,生成畫面 
  134.  
  135. $concreteBuilder->getResult(); 
  136.  
  137. ?> 

用途總結:建造器模式可以將流程和細節分離,各司其職.

實現總結:需要一個建造器接口或者抽象類,負責規范各個方法,比如上面的Builder,然后讓實際的建造器類去實現所有的方法,比如上面的ConcreteBuilder,同時需要負責流程管理的監督類,比如上面的Director,負責調用建造器的各個零件制造方法,最后讓建造器去組裝所有的零件.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 张北县| 三穗县| 桓台县| 天全县| 肇源县| 正阳县| 浙江省| 赤壁市| 南丹县| 横峰县| 岳普湖县| 五家渠市| 道真| 乌鲁木齐市| 广南县| 阳信县| 宁海县| 阜城县| 古浪县| 甘洛县| 东平县| 和林格尔县| 垣曲县| 民县| 济南市| 渝中区| 闻喜县| 阜新市| 安平县| 黄大仙区| 东山县| 诸城市| 扬州市| 宣化县| 三台县| 富锦市| 东光县| 西华县| 乌鲁木齐县| 偏关县| 古交市|