php 設(shè)計模式- 委托模式

委托模式

通過分配或委托其他對象霹肝,委托設(shè)計模式能夠去除核心對象中的判決和復(fù)雜的功能性适掰。
應(yīng)用場景
設(shè)計了一個cd類颂碧,類中有mp3播放模式荠列,和mp4播放模式
改進前,使用cd類的播放模式载城,需要在實例化的類中去判斷選擇什么方式的播放模式
改進后肌似,播放模式當(dāng)做一個參數(shù)傳入playList函數(shù)中,就自動能找到對應(yīng)需要播放的方法诉瓦。

代碼:cd類川队,未改進之前,選擇播放模式是一種痛苦的事情 睬澡。

<?php
//委托模式-去除核心對象中的判決和復(fù)雜的功能性
//使用委托模式之前固额,調(diào)用cd類,選擇cd播放模式是復(fù)雜的選擇過程
classcd{
protected$cdInfo=array();

publicfunctionaddSong($song){
$this->cdInfo[$song]=$song;
}

publicfunctionplayMp3($song){
return$this->cdInfo[$song].'.mp3';
}

publicfunctionplayMp4($song){
return$this->cdInfo[$song].'.mp4';
}
}
$oldCd=newcd;
$oldCd->addSong("1");
$oldCd->addSong("2");
$oldCd->addSong("3");
$type='mp3';
if($type=='mp3'){
$oldCd->playMp3();
}else{
$oldCd->playMp4();
}
>

代碼:通過委托模式猴贰,改進后的cd類

classcdDelegate{
protected$cdInfo=array();

publicfunctionaddSong($song){
$this->cdInfo[$song]=$song;
}

publicfunctionplay($type,$song){
$obj=new$type;
return$obj->playList($this->cdInfo,$song);
}
}

classmp3{
publicfunctionplayList($list){
return$list[$song];
}
}

classmp4{
publicfunctionplayList($list){
return$list[$song];
}
}

$newCd=newcd;
$newCd->addSong("1");
$newCd->addSong("2");
$newCd->addSong("3");
$type='mp3';
$oldCd->play('mp3','1');//只要傳遞參數(shù)就能知道需要選擇何種播放模式

參考:《PHP設(shè)計模式》Aaron Saray著

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末对雪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子米绕,更是在濱河造成了極大的恐慌瑟捣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栅干,死亡現(xiàn)場離奇詭異迈套,居然都是意外死亡,警方通過查閱死者的電腦和手機碱鳞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進店門桑李,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窿给,你說我怎么就攤上這事贵白。” “怎么了崩泡?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵禁荒,是天一觀的道長。 經(jīng)常有香客問我角撞,道長呛伴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任谒所,我火速辦了婚禮热康,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘劣领。我一直安慰自己姐军,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布奕锌。 她就那樣靜靜地躺著衫贬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪歇攻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天梆造,我揣著相機與錄音缴守,去河邊找鬼。 笑死镇辉,一個胖子當(dāng)著我的面吹牛屡穗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忽肛,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼村砂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屹逛?” 一聲冷哼從身側(cè)響起础废,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎罕模,沒想到半個月后评腺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡淑掌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年蒿讥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛腕。...
    茶點故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡芋绸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出担敌,到底是詐尸還是另有隱情摔敛,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布柄错,位于F島的核電站舷夺,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏售貌。R本人自食惡果不足惜给猾,卻給世界環(huán)境...
    茶點故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颂跨。 院中可真熱鬧敢伸,春花似錦、人聲如沸恒削。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躯砰,卻和暖如春每币,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琢歇。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工兰怠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人李茫。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓揭保,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魄宏。 傳聞我的和親對象是個殘疾皇子秸侣,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法宠互,內(nèi)部類的語法味榛,繼承相關(guān)的語法,異常的語法名秀,線程的語...
    子非魚_t_閱讀 31,598評論 18 399
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,749評論 25 707
  • 設(shè)計模式匯總 一励负、基礎(chǔ)知識 1. 設(shè)計模式概述 定義:設(shè)計模式(Design Pattern)是一套被反復(fù)使用、多...
    MinoyJet閱讀 3,922評論 1 15
  • 最近幾日匕得,凡在家用餐继榆,我都會不由自主地要夾上半塊或一塊豆腐乳佐飯。我知道這是我的豆腐...
    茄子藍(lán)閱讀 327評論 0 1
  • 寫作練習(xí)汁掠,開貼篇 本人在37歲高齡之際略吨,決定改行學(xué)文案,學(xué)寫作 學(xué)習(xí)的過程中考阱,深知寫的重要性翠忠,于是開貼日更,開啟刻...
    胖師爺閱讀 2,431評論 0 1