本文实例讲述了PHP设计模式之建造者模式(Builder)原理与用法。分享给大家供大家参考,具体如下:
这个建造者模式,我们也可以称为生成器模式,核心思想是将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式,简单点来说就是为了消除其它对象复杂的创建过程。
例如:汽车,他的发动机引擎有好多品牌,轮胎也有各种材质,内饰更是千奇百怪;鸟,他的头、翅膀以及脚有各种颜色和形状,在创建这种复杂对象的时候,我们建议使用建造者模式。
先来看一个案例来感受下什么是建造者模式:
- 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,金钱等信息,才能获得用户具体的信息结果。
- 创建一个UserInfoBuilder 用户建造者类,这个类,将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();
内容版权声明:除非注明,否则皆为本站原创文章。