歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

PHP設計模式系列 - 建造者模式

  • 什麼是建造者模式

建造者模式主要是為了消除其它對象復雜的創建過程。

  • 設計場景
    1. 有一個用戶的UserInfo類,創建這個類,需要創建用戶的姓名,年齡,金錢等信息,才能獲得用戶具體的信息結果。
    2. 創建一個UserInfoBuilder 用戶建造者類,這個類,將UserInfo復雜的創建姓名,年齡,金錢等操作封裝起來,簡化用戶類的創建過程
  • 代碼:UserInfo類,創建UserInfo類是復雜的,痛苦的。
  1. //建造者模式,目的是消除其它對象復雜的創建過程   
  2.   
  3. /* 描述一個用戶的類,包含用戶姓名,年齡,金錢 */  
  4. class UserInfo {  
  5.   
  6.     protected $userName = '';    
  7.     protected $userAge = '';  
  8.     protected $userMoney = '';  
  9.   
  10.     public function setUserName($userName) {  
  11.         $this->userName = $userName;  
  12.     }     
  13.       
  14.     public function setUserAge($userAge) {  
  15.         $this->userAge = $userAge;  
  16.     }     
  17.       
  18.     public function setUserMoney($userMoney) {  
  19.         $this->userMoney = $userMoney;  
  20.     }  
  21.       
  22.     public function getPeople() {  
  23.         echo "這個人的姓名是:" . $this->setUserName . ',年齡是:'  . $this->userAge . ', 金錢:' . $this->userMoney;  
  24.     }  
  25. }  
  26. /* 實例化,並且創建這個用戶的時候,是很痛苦的,需要設置用戶名,年齡和金錢*/  
  27. $peopleInfo = array(  
  28.     'userName' => 'initphp',  
  29.     'userAge' => 28,  
  30.     'userMoney' => '100元'  
  31.     );  
  32. $UserInfo = new UserInfo;  
  33. //下面需要一步步的設置用戶信息,才能得到用戶詳細信息,過程糾結而痛苦   
  34. $UserInfo->setUserName($peopleInfo['userName']);   
  35. $UserInfo->setUserAge($peopleInfo['userAge']);  
  36. $UserInfo->setUserMoney($peopleInfo['userMoney']);  
  37. $UserInfo->getPeople();  
  • 代碼:UserInfoBuilder 用戶信息建造者類,將UserInfo的創建過程封裝掉,開發者使用起來心情舒暢
  1. <?php  
  2. //建造者模式,目的是消除其它對象復雜的創建過程   
  3. include("UserInfo.php");  
  4. class UserInfoBuilder {  
  5.     protected $obj;  
  6.       
  7.     public function __construct() {  
  8.         $this->obj = new UserInfo;  
  9.     }  
  10.       
  11.     public function buildPeople($peopleInfo) {  
  12.         $this->obj->setUserName($peopleInfo['userName']);  
  13.         $this->obj->setUserAge($peopleInfo['userAge']);  
  14.         $this->obj->setUserMoney($peopleInfo['userMoney']);  
  15.     }   
  16.       
  17.     public function getPeople() {  
  18.         $this->obj->getPeople();  
  19.     }  
  20. }  
  21.   
  22. /* 創建過程被封裝了,用戶使用簡單了 */  
  23. $peopleInfo = array(  
  24.     'userName' => 'initphp',  
  25.     'userAge' => 28,  
  26.     'userMoney' => '100元'  
  27.     );  
  28. $UserInfoBuilder = new UserInfoBuilder;  
  29. $UserInfoBuilder->buildPeople($peopleInfo); //直接一個build   
  30. $UserInfoBuilder->getPeople();  

參考:《PHP設計模式》Aaron Saray著

Copyright © Linux教程網 All Rights Reserved