PHP设计模式系列 - 建造者模式

本文介绍了建造者模式的基本概念及其应用场景,通过对比复杂对象创建过程前后的代码实现,展示了建造者模式如何简化对象创建流程。
  • 什么是建造者模式

建造者模式主要是为了消除其它对象复杂的创建过程。

  • 设计场景
    1. 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,金钱等信息,才能获得用户具体的信息结果。
    2. 创建一个UserInfoBuilder 用户建造者类,这个类,将UserInfo复杂的创建姓名,年龄,金钱等操作封装起来,简化用户类的创建过程
  • 代码:UserInfo类,创建UserInfo类是复杂的,痛苦的。
    //建造者模式,目的是消除其它对象复杂的创建过程  
      
    /* 描述一个用户的类,包含用户姓名,年龄,金钱 */  
    class UserInfo {  
      
        protected $userName = '';    
        protected $userAge = '';  
        protected $userMoney = '';  
      
        public function setUserName($userName) {  
            $this->userName = $userName;  
        }     
          
        public function setUserAge($userAge) {  
            $this->userAge = $userAge;  
        }     
          
        public function setUserMoney($userMoney) {  
            $this->userMoney = $userMoney;  
        }  
          
        public function getPeople() {  
            echo "这个人的姓名是:" . $this->setUserName . ',年龄是:'  . $this->userAge . ', 金钱:' . $this->userMoney;  
        }  
    }  
    /* 实例化,并且创建这个用户的时候,是很痛苦的,需要设置用户名,年龄和金钱*/  
    $peopleInfo = array(  
        'userName' => 'initphp',  
        'userAge' => 28,  
        'userMoney' => '100元'  
        );  
    $UserInfo = new UserInfo;  
    //下面需要一步步的设置用户信息,才能得到用户详细信息,过程纠结而痛苦  
    $UserInfo->setUserName($peopleInfo['userName']);   
    $UserInfo->setUserAge($peopleInfo['userAge']);  
    $UserInfo->setUserMoney($peopleInfo['userMoney']);  
    $UserInfo->getPeople();  

代码:UserInfoBuilder 用户信息建造者类,将UserInfo的创建过程封装掉,开发者使用起来心情舒畅

    <?php  
    //建造者模式,目的是消除其它对象复杂的创建过程  
    include("UserInfo.php");  
    class UserInfoBuilder {  
        protected $obj;  
          
        public function __construct() {  
            $this->obj = new UserInfo;  
        }  
          
        public function buildPeople($peopleInfo) {  
            $this->obj->setUserName($peopleInfo['userName']);  
            $this->obj->setUserAge($peopleInfo['userAge']);  
            $this->obj->setUserMoney($peopleInfo['userMoney']);  
        }   
          
        public function getPeople() {  
            $this->obj->getPeople();  
        }  
    }  
      
    /* 创建过程被封装了,用户使用简单了 */  
    $peopleInfo = array(  
        'userName' => 'initphp',  
        'userAge' => 28,  
        'userMoney' => '100元'  
        );  
    $UserInfoBuilder = new UserInfoBuilder;  
    $UserInfoBuilder->buildPeople($peopleInfo); //直接一个build  
    $UserInfoBuilder->getPeople();  

 

 

转自:http://blog.youkuaiyun.com/initphp/article/details/7677561

转载于:https://www.cnblogs.com/zhhtao/p/4414608.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值