首頁 >後端開發 >php教程 >PHP委託模式詳解及案例

PHP委託模式詳解及案例

墨辰丷
墨辰丷原創
2018-05-16 14:07:121184瀏覽

本篇主要介紹PHP委託模式詳解及案例,有興趣的朋友參考下,希望對大家有幫助。

委託模式

透過分配或委託其他對象,委託設計模式能夠移除核心對像中的判決和複雜的功能性。

應用場景

1.設計了一個cd類,類別中有mp3播放模式,和mp4播放模式

2.改進前,使用cd類的播放模式,需要在實例化的類別中去判斷選擇什麼方式的播放模式

3.改進後,播放模式當做一個參數傳入playList函數中,就自動能找到對應需要播放的方法。

程式碼:cd類,未改進之前,選擇播放模式是一種痛苦的事情

<?php  
//委托模式-去除核心对象中的判决和复杂的功能性  
//使用委托模式之前,调用cd类,选择cd播放模式是复杂的选择过程  
class cd {  
    protected $cdInfo = array();   
      
    public function addSong($song) {  
        $this->cdInfo[$song] = $song;  
    }  
      
    public function playMp3($song) {  
        return $this->cdInfo[$song] . &#39;.mp3&#39;;  
    }  
      
    public function playMp4($song) {  
        return $this->cdInfo[$song] . &#39;.mp4&#39;;  
    }  
}  
$oldCd = new cd;  
$oldCd->addSong("1");  
$oldCd->addSong("2");  
$oldCd->addSong("3");  
$type = &#39;mp3&#39;;  
if ($type == &#39;mp3&#39;) {  
    $oldCd->playMp3();  
} else {  
    $oldCd->playMp4();  
}

程式碼:透過委託模式,改進後的cd類

<?php  
//委托模式-去除核心对象中的判决和复杂的功能性  
//改进cd类  
class cdDelegate {  
    protected $cdInfo = array();   
      
    public function addSong($song) {  
        $this->cdInfo[$song] = $song;  
    }  
      
    public function play($type, $song) {  
        $obj = new $type;  
        return $obj->playList($this->cdInfo, $song);  
    }  
}  
  
class mp3 {  
    public function playList($list) {  
        return $list[$song];  
    }  
}  
  
class mp4 {  
    public function playList($list) {  
        return $list[$song];  
    }  
}  
  
$newCd = new cd;  
$newCd->addSong("1");  
$newCd->addSong("2");  
$newCd->addSong("3");  
$type = &#39;mp3&#39;;  
$oldCd->play(&#39;mp3&#39;, &#39;1&#39;); //只要传递参数就能知道需要选择何种播放模式

相關推薦:

php中的委託模式實例教學

PHP物件導向設計模式:委託模式使用實例

##php設計模式之委託模式#######

以上是PHP委託模式詳解及案例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn