整理一下本身的學習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) +---------------------------------------------------------------------- */