摘要:与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类导演类。
什么是建造者设计模式
建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。
设计场景:
class UserInfo { protected $_userName; protected $_userAge; protected $_userHobby; public function setUserName($userName) { $this->_userName = $userName; } public function setUserAge($userAge) { $this->_userAge = $userAge; } public function setUserHobby($userHobby) { $this->_userHobby = $userHobby; } public function getPeopleInfo() { echo "
这个人的名字是:" . $this->_userName . "
年龄为:" . $this->_userAge . "
爱好:" . $this->_userHobby; } }
$modelUser = new UserInfo(); $modelUser->setUserName("松涛"); $modelUser->setUserAge("23"); $modelUser->setUserHobby("推理小说"); $modelUser->getPeopleInfo();
这个人的名字是:松涛 年龄为:23 爱好:推理小说
这时候我们来看建造者设计模式的设计:
这个是将复杂的创建过程封装在了builderPeople这个方法里面。 接下来是创建对象:
class UserBuilder { protected $_obj; public function __construct() { $this->_obj = new UserInfo(); } public function builderPeople($userInfo) { $this->_obj->setUserName($userInfo["userName"]); $this->_obj->setUserAge($userInfo["userAge"]); $this->_obj->setUserHobby($userInfo["userHobby"]); } public function getBuliderPeopleInfo() { $this->_obj->getPeopleInfo(); } }
$userArr = array( "userName" => "松涛", "userAge" => "23", "userHobby" => "推理小说"); $modelUserBuilder = new UserBuilder(); $modelUserBuilder->builderPeople($userArr); $modelUserBuilder->getBuliderPeopleInfo();
这个人的名字是:松涛 年龄为:23 爱好:推理小说建造者的优缺点 优点:
建造者模式可以很好的将一个对象的实现与相关的“业务”逻辑分离开来,从而可以在不改变事件逻辑的前提下,使增加(或改变)实现变得非常容易。
缺点:建造者接口的修改会导致所有执行类的修改。
以下情况应当使用建造者模式:1、 需要生成的产品对象有复杂的内部结构。
2、 需要生成的产品对象的属性相互依赖,建造者模式可以强迫生成顺序。
3、 在对象创建过程中会使用到系统中的一些其它对象,这些对象在产品对象的创建过程中不易得到。
1、 建造者模式的使用使得产品的内部表象可以独立的变化。使用建造者模式可以使客户端不必知道产品内部组成的细节。
2、 每一个Builder都相对独立,而与其它的Builder(独立控制逻辑)无关。
3、 模式所建造的最终产品更易于控制。
我们可以看到,建造者模式与工厂模式是极为相似的,总体上,建造者模式仅仅只比工厂模式多了一个“导演类”的角色。在建造者模式的类图中,假如把这个导演类看做是最终调用的客户端,那么图中剩余的部分就可以看作是一个简单的工厂模式了。
与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类——导演类。也就是说,工厂模式是将对象的全部创建过程封装在工厂类中,由工厂类向客户端提供最终的产品;而建造者模式中,建造者类一般只提供产品类中各个组件的建造,而将具体建造过程交付给导演类。由导演类负责将各个组件按照特定的规则组建为产品,然后将组建好的产品交付给客户端。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/29527.html
摘要:你好,是我琉忆,程序员面试笔试系列图书的作者。建造者模式介绍建造者模式又名生成器模式,是一种对象构建模式。表示被构造的复杂对象。创建该产品的内部表示并定义它的装配过程。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工厂模式周三:PHP面试常考之设计模式——建造者模式周五:PHP面...
整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打 /** * Builder 建造者模式 * ------------------------------------- * ** 来自说明 ** * * 建造者设计模式的母的是消除其他对象的复杂创建过程, * 使用建造者设计模式不仅是最佳...
整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打 /** * Builder 建造者模式 * ------------------------------------- * ** 来自说明 ** * * 建造者设计模式的母的是消除其他对象的复杂创建过程, * 使用建造者设计模式不仅是最佳...
阅读 2991·2023-04-25 20:43
阅读 1701·2021-09-30 09:54
阅读 1569·2021-09-24 09:47
阅读 2858·2021-09-06 15:02
阅读 3484·2021-02-22 17:09
阅读 1205·2019-08-30 15:53
阅读 1421·2019-08-29 17:04
阅读 1919·2019-08-28 18:22