整理一下本身的學習Aaron Saray 寫的PHP設計模式
一些demo
和本身的理解。大佬看完若是發現鄙人理解有誤請當即指出,感謝拍磚,跪求鞭打php
/** * Adapter 適配器模式 * ------------------------------------- * ** 來自說明 ** * * 經過適配器模式可以使用新的代碼和功能性來幫助更新原有的系統。 * 簡單的說須要轉化一個對象的接口用於另外一個對象中時, * 在不改變原對象的基礎上能夠採用適配器模式 * * ===================================== * ** 應用場景 ** * * 對於項目中比較舊的架構底層的基類作接口更改時使用 * * ------------------------------------- * * @version ${Id}$ * @author Shaowei Pu <542684913@QQ.cn> */
<?php // 你如今是大巍施工隊分配到伊朗的挖礦工頭。 /** * 大巍施工隊總部 */ class headquarters { protected $_worker; public function __construct($worker){ $this->_worker = $worker; } public function getWorker(){ if( !empty($this->_worker) ){ return '力大無窮'.$this->_worker.'個挖礦師傅'; } } } /** * 分包出去幹活的 */ class assignWorker { protected $_workerObject; public function __construct(headquarters $_workerObject ){ $this->_workerObject = $_workerObject; } public function assign(){ echo $this->_workerObject->getWorker(); // 將錯誤信息輸出至控制檯 } } /** * 如今你要20個力大無窮的搬磚師傅,而後找下總部,總部就給你了 */ $Iran = new assignWorker(new headquarters(20)); $Iran->assign(); echo "<hr/>"; // 日復一日,年復一年,你又被調到黎巴嫩挖礦,這邊不一樣於你在伊朗的日子了,這裏你要挖取鑽石礦 // 可是這個鑽石礦要幾個磚家配合挖礦師傅才行,但是公司如今不能提供給你其餘部門,由於我們是百年大企業,主單位不能隨便加部門進去 // 大巍國際的人才培養很利索,要什麼有什麼,這可難不倒你。因此你想了這樣一個辦法 // /** * 黎巴嫩專用適配器 */ class Adapter extends headquarters { public function __construct($worker){ parent::__construct($worker); $this->getallheaders(); } public function getallheaders(){ $this->_worker ='勇敢過人的'.($this->_worker/2).'個磚家在加上'.$this->_worker; } } // 這下你要的的人就出來了 $Lebanon = new assignWorker(new Adapter(20)); $Lebanon->assign();