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

首頁 > 語言 > PHP > 正文

PHP設計模式之建造者模式定義與用法簡單示例

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

本文實例講述了PHP設計模式之建造者模式。分享給大家供大家參考,具體如下:

建造者模式:

將復雜對象的創建過程和表示進行分離(好吧,我也看不懂什么意思1)。

來點我人類能聽懂的話:

1、在客戶端看來需要的僅僅是實例化后的類對象(大多數情況下是需要類的屬性)。

2、傳統方式下當類有了之后,一般直接通過new class()的方式直接進行實例化,然后通過$obj->set1()構建屬性1,$obj->set2()構建屬性2,$obj->set3()構建屬性3。。。

3、傳統方式有一個很大的弊端:當我們的類發生改變后,我們需要大量的修改,比如文件1中加上$obj->set4(),文件2中加上$obj->set4(),增加很多的工作量。

4、建造者模式會給出構建對象的具體實現類,將對象的創建實例化過程封裝在建造者類中,并給出一個返回構建后對象的方法,將構建后的對象返回。

5、當類發生改變后,只需要改變建造者類中構建對象的build()方法,對客戶端來說,這并不可見,并且不用做修改就得到了修改后的對象。改動的只是需求對象修改后的邏輯處理。

  1. /** 
  2. * 產品類Person 
  3. */ 
  4. class Person 
  5.   public $_head
  6.   public $_body
  7.   public function setHead($head){ 
  8.     $this->_head=$head
  9.   } 
  10.   public function getHead(){ 
  11.     echo $this->_head; 
  12.   } 
  13.   public function setBody($body){ 
  14.     $this->_body=$body
  15.   } 
  16.   public function getBody(){ 
  17.     echo $this->_body; 
  18.   } 
  19. /* 
  20. 抽象建造者: 
  21. 定義的一個抽象接口,用于對具體建造者類進行規范 
  22. */ 
  23. interface Builder{ 
  24.   public function buildHead(); 
  25.   public function buildBody(); 
  26.   public function getResult(); 
  27. /* 
  28. 具體建造者: 
  29. 用于實現具體建造者類 
  30. */ 
  31. class ConcreteBuilder implements Builder{ 
  32.   public $person
  33.   public $data
  34.   public function __construct($data){ 
  35.     $this->person=new Person(); 
  36.     $this->data=$data
  37.   } 
  38.   public function buildHead(){ 
  39.     $this->person->setHead($this->data['head']); 
  40.   } 
  41.   public function buildBody(){ 
  42.     $this->person->setBody($this->data['body']); 
  43.   } 
  44.   public function getResult(){ 
  45.     return $this->person; 
  46.   } 
  47. /* 
  48. 導演者類: 
  49. 用于調用具體建造者類創建產品類實例 
  50. */ 
  51. class Director{ 
  52.   public function __construct(ConcreteBuilder $builder){ 
  53.     $builder->buildHead(); 
  54.     $builder->buildBody(); 
  55.   } 
  56. /* 
  57. 客戶端: 
  58. 根據需求進行邏輯處理 
  59. */ 
  60. $data=array
  61.   'head'=>'大頭兒子'
  62.   'body'=>'身體棒棒噠' 
  63.   ); 
  64. $builder=new ConcreteBuilder($data); 
  65. $director=new Director($builder); 
  66. $person=$builder->getResult(); 
  67. echo $person->_head; 
  68. echo $person->_body; 

運行結果:

大頭兒子身體棒棒噠

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漯河市| 喀喇沁旗| 黄骅市| 杭锦旗| 娄底市| 曲阳县| 夏河县| 比如县| 三门县| 白朗县| 平谷区| 锡林浩特市| 方山县| 滕州市| 宜城市| 来宾市| 武宣县| 镇江市| 灯塔市| 固原市| 陵川县| 文山县| 衡山县| 合肥市| 文化| 大渡口区| 鸡西市| 临邑县| 大姚县| 奉化市| 潢川县| 广安市| 新和县| 海盐县| 金华市| 墨玉县| 集安市| 新余市| 内乡县| 杭锦后旗| 施甸县|