亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

龙海市| 武城县| 满洲里市| 滦平县| 洛浦县| 六盘水市| 剑川县| 湄潭县| 宁阳县| 南平市| 尚志市| 屏边| 合山市| 神池县| 石河子市| 绍兴县| 红安县| 巩留县| 山西省| 长沙县| 个旧市| 房山区| 牡丹江市| 崇仁县| 张家界市| 石阡县| 通城县| 余庆县| 建阳市| 巴里| 娄烦县| 穆棱市| 东至县| 凤台县| 祁连县| 大邑县| 双鸭山市| 金沙县| 灌云县| 聂拉木县| 通州市|