整理一下本身的学习Aaron Saray 写的PHP设计模式一些demo和本身的理解。大佬看完若是发现鄙人理解有误请当即指出,感谢拍砖,跪求鞭打mysql
/** * 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) +---------------------------------------------------------------------- */