PHP設計模式-Adapter 適配器模式

整理一下本身的學習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();
相關文章
相關標籤/搜索