91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中的委托設計模式是什么

發布時間:2021-06-29 10:10:42 來源:億速云 閱讀:119 作者:chen 欄目:開發技術

這篇文章主要講解了“PHP中的委托設計模式是什么”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP中的委托設計模式是什么”吧!

模式定義

委托是對一個類的功能進行擴展和復用的方法。它的做法是:寫一個附加的類提供附加的功能,并使用原來的類的實例提供原有的功能。

假設我們有一個 TeamLead 類,將其既定任務委托給一個關聯輔助對象 JuniorDeveloper 來完成:本來 TeamLead 處理 writeCode 方法,Usage 調用 TeamLead 的該方法,但現在 TeamLead 將 writeCode 的實現委托給 JuniorDeveloper 的 writeBadCode 來實現,但 Usage 并沒有感知在執行 writeBadCode 方法。

設計了一個cd類,類中有mp3播放模式,和mp4播放模式
改進前,使用cd類的播放模式,需要在實例化的類中去判斷選擇什么方式的播放模式
改進后,播放模式當做一個參數傳入playList函數中,就自動能找到對應需要播放的方法。

一,未改進前

<?php 
//使用委托模式之前,調用cd類,選擇cd播放模式是復雜的選擇過程 
class cd { 
protected $cdInfo = array(); 
public function addSong($song) { 
$this->cdInfo[$song] = $song; 
} 
public function playMp3($song) { 
return $this->cdInfo[$song] . '.mp3'; 
} 
public function playMp4($song) { 
return $this->cdInfo[$song] . '.mp4'; 
} 
} 
$oldCd = new cd; 
$oldCd->addSong("1"); 
$oldCd->addSong("2"); 
$oldCd->addSong("3"); 
$type = 'mp3'; 
if ($type == 'mp3') { 
$oldCd->playMp3(); 
} else { 
$oldCd->playMp4(); 
}

二、通過委托模式,改進后的cd類

<?php
namespace Tools;
/*
委托模式
去除核心對象中的判決和復雜功能性
*/

//委托接口
interface Delegate{
public function playList($list,$song);
}
//mp3處理類
class mp3 implements Delegate{
public function playList($list,$song){
return $list[$song].'.mp3';
}
}
//mp4處理類
class mp4 implements Delegate{
public function playList($list, $song)
{
return $list[$song].'.mp4';
}
}
class cdDelegate{
protected $cdInfo = array();

public function addSong($song){
$this->cdInfo[$song] = $song;
}

public function play($type,$song){
$name = '\Tools\\'.$type;
$obj = new $name;
return $obj->playList($this->cdInfo,$song);
}
}
$newCd = new cdDelegate();
$newCd->addSong("1");
$newCd->addSong("2");
$newCd->addSong("3");
echo $newCd->play('mp3','1');//只要傳遞參數就能知道需要選擇何種播放模式

感謝各位的閱讀,以上就是“PHP中的委托設計模式是什么”的內容了,經過本文的學習后,相信大家對PHP中的委托設計模式是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

蕲春县| 平和县| 长春市| 仁寿县| 镇赉县| 辉县市| 承德县| 重庆市| 杭州市| 北辰区| 淮南市| 崇信县| 新野县| 洛扎县| 兰西县| 定州市| 万荣县| 淄博市| 建平县| 泰州市| 项城市| 乐安县| 当涂县| 高清| 库车县| 晋城| 犍为县| 普陀区| 徐汇区| 淮北市| 晋江市| 留坝县| 白城市| 夏河县| 百色市| 孝感市| 昌邑市| 禄劝| 上思县| 莫力| 北川|