zoukankan      html  css  js  c++  java
  • 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著

  • 相关阅读:
    C语言调用汇编函数 实现超过32位数的加法
    【Qt学习笔记】13_富文本及打印页面
    Java初级回顾
    Java中FileInputStream和FileOutputStream类实现文件夹及文件的复制粘贴
    Java中File类如何扫描磁盘所有文件包括子目录及子目录文件
    学习笔记之循环链表
    练习 hdu 5523 Game
    学习笔记之集合ArrayList(1)和迭代器
    学习笔记之工厂方法模式
    学习笔记之基本数据类型-包装类-String之间的转换
  • 原文地址:https://www.cnblogs.com/wanghaitao/p/9440353.html
Copyright © 2011-2022 走看看