整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打
/** * Builder 建造者模式 * ------------------------------------- * ** 来自说明 ** * * 建造者设计模式的母的是消除其他对象的复杂创建过程, * 使用建造者设计模式不仅是最佳的做法 * 而且在某个对象的构造和配置方法改变时尽可能地减少重复的代码 * * ===================================== * ** 应用场景 ** * * 数据库接口类 | 优化基类 * * ------------------------------------- * * @version ${Id}$ * @author Shaowei Pu <54268491@qq.com> */
// 现在是这样一个情况,您是学生个人档案录入员,你看到了你们Boss 在许多年前,你还是一个乳臭未干的小孩时写的录入类 class Entering { public $info = []; public function setName( $name ){ $this->info["name"] = $name; } public function setOld( $old ){ $this->info["old"] = $old; } public function setGender( $gender ){ $this->info["gander"] = $gender; } } // 然后 $worker = new Entering; $worker->setName("jacky"); $worker->setOld("22"); $worker->setGender("男"); // 然后这样就可以了,一个学生的完整信息就这么弄出来了 var_dump($worker->info); /* +---------------------------------------------------------------------- | array (size=3) | "name" => string "jacky" (length=5) | "old" => string "22" (length=2) | "gander" => string "男" (length=3) +---------------------------------------------------------------------- */ // 但是爱折腾的你从来不会放弃任何机会,自从学习了建造者模式的你 总有种蠢蠢欲动,于是乎就有了下面的类 class EnteringBuilder{ protected $_baseObject = null; protected $_newInfo = [] ; public function __construct( array $info ){ $this->_baseObject = new Entering; $this->_newInfo = $info; } public function build(){ $this->_baseObject->setName ( $this->_newInfo["name"]); $this->_baseObject->setOld ( $this->_newInfo["old"]); $this->_baseObject->setGender( $this->_newInfo["gander"]); } public function getInfo(){ return $this->_baseObject->info; } } // 然后这样 $new_worker = new EnteringBuilder([ "name" => "lucy", "old" => 22, "gander" => "女", ]); $new_worker->build(); // 然后这样就可以了,一个学生的完整信息就这么弄出来了 var_dump($new_worker->getInfo()); /* +---------------------------------------------------------------------- | array (size=22) | "Host" => string "localhost" (length=9) | "Db" => string "sys" (length=3) | "User" => string "mysql.sys" (length=9) | "Select_priv" => string "N" (length=1) | "Insert_priv" => string "N" (length=1) | "Update_priv" => string "N" (length=1) | "Delete_priv" => string "N" (length=1) | "Create_priv" => string "N" (length=1) | "Drop_priv" => string "N" (length=1) | "Grant_priv" => string "N" (length=1) | "References_priv" => string "N" (length=1) | "Index_priv" => string "N" (length=1) | "Alter_priv" => string "N" (length=1) | "Create_tmp_table_priv" => string "N" (length=1) | "Lock_tables_priv" => string "N" (length=1) | "Create_view_priv" => string "N" (length=1) | "Show_view_priv" => string "N" (length=1) | "Create_routine_priv" => string "N" (length=1) | "Alter_routine_priv" => string "N" (length=1) | "Execute_priv" => string "N" (length=1) | "Event_priv" => string "N" (length=1) | "Trigger_priv" => string "Y" (length=1) +---------------------------------------------------------------------- */
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/39456.html
摘要:与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类导演类。 什么是建造者设计模式 建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用户具体的信息结果。如: 这是一个...
整理一下自己的学习Aaron Saray 写的PHP设计模式一些demo和自己的理解。大佬看完如果发现鄙人理解有误请立即指出,感谢拍砖,跪求鞭打 /** * Builder 建造者模式 * ------------------------------------- * ** 来自说明 ** * * 建造者设计模式的母的是消除其他对象的复杂创建过程, * 使用建造者设计模式不仅是最佳...
摘要:你好,是我琉忆,程序员面试笔试系列图书的作者。建造者模式介绍建造者模式又名生成器模式,是一种对象构建模式。表示被构造的复杂对象。创建该产品的内部表示并定义它的装配过程。 你好,是我琉忆,PHP程序员面试笔试系列图书的作者。 本周(2019.3.11至3.15)的一三五更新的文章如下: 周一:PHP面试常考之设计模式——工厂模式周三:PHP面试常考之设计模式——建造者模式周五:PHP面...
阅读 3715·2021-09-02 09:53
阅读 2724·2021-07-30 14:57
阅读 3473·2019-08-30 13:09
阅读 1134·2019-08-29 13:25
阅读 787·2019-08-29 12:28
阅读 1439·2019-08-29 12:26
阅读 1095·2019-08-28 17:58
阅读 3289·2019-08-26 13:28