歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> PHP設計模式系列 - 建造者模式

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

日期:2017/3/1 10:19:01   编辑:Linux編程
  • 什麼是建造者模式

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

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

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

Copyright © Linux教程網 All Rights Reserved