整理一下自己的学习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面...
阅读 3806·2021-09-02 09:53
阅读 2790·2021-07-30 14:57
阅读 3539·2019-08-30 13:09
阅读 1241·2019-08-29 13:25
阅读 850·2019-08-29 12:28
阅读 1484·2019-08-29 12:26
阅读 1169·2019-08-28 17:58
阅读 3349·2019-08-26 13:28