您的位置:首页 > 编程语言 > PHP开发

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

2017-05-16 14:15 639 查看
什么是建造者模式

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

设计场景
有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,金钱等信息,才能获得用户具体的信息结果。
创建一个UserInfoBuilder 用户建造者类,这个类,将UserInfo复杂的创建姓名,年龄,金钱等操作封装起来,简化用户类的创建过程

代码:UserInfo类,创建UserInfo类是复杂的,痛苦的。

[php] view
plain copy

 print?

//建造者模式,目的是消除其它对象复杂的创建过程  

  

/* 描述一个用户的类,包含用户姓名,年龄,金钱 */  

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] view
plain copy

 print?

<?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();  

 

参考:《PHP设计模式》Aaron Saray著
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: