PHP設(shè)計(jì)模式之委托模式定義與用法簡單示例
本文實(shí)例講述了PHP設(shè)計(jì)模式之委托模式定義與用法。分享給大家供大家參考,具體如下:
委托模式:
通過分配或委托至其他對象,委托設(shè)計(jì)模式能夠去除核心對象中的判決和復(fù)雜的功能性。
class Bank{ protected $info; /* 設(shè)置基本信息 @param string $type 類型。例如"RMB" @param int $money 利率。例如"0.4%" */ public function updateBrankInfo($type,$money){ $this->info[$type]=$money; } /* 相關(guān)操作(包括存款、取款操作) @param int $branktype 操作類型 */ public function brankWithdraw($branktype){ $obj=new $branktype; return $obj->brankMain($this->info); } } /* 委托接口 */ interface Delegate{ /* 操作方法: 實(shí)現(xiàn)該接口必須實(shí)現(xiàn)的方法 */ public function brankMain($info); } /* 存款操作類 */ class brankDeposit implements Delegate{ /* 存款操作 */ public function brankMain($info){ echo $info['deposit']; } } /* 取款操作類 */ class brankWithdraw implements Delegate{ /* 取款操作 */ public function brankMain($info){ echo $info['withdraw']; } } /* 客戶端測試代碼: */ $bank=new Bank(); $bank->updateBrankInfo("deposit","4000"); $bank->updateBrankInfo("withdraw","2000"); $bank->brankWithdraw("brankDeposit"); echo "<br>"; $bank->brankWithdraw("brankWithdraw");
運(yùn)行結(jié)果:
4000
2000
傳統(tǒng)方式:
在傳統(tǒng)方式下,我們需要判斷當(dāng)前操作是取款操作還是存款操作,在分別調(diào)用Bank類中的取款操作和存款操作。
委托模式:
在委托模式下,我們將不需要客戶端的判斷操作,對客戶端來說,需要什么操作,直接傳入操作類型即可,Bank類可自動(dòng)判斷操作類型,返回相應(yīng)操作的操作結(jié)果。當(dāng)我們的操作類型非常多的時(shí)候,在客戶端用if else
判斷無疑是很可怕的,再假如我們在很多地方都要有這塊判斷代碼,我們需要對這些地方的判斷代碼都進(jìn)行修改(加入后來添加的判斷),而采用委托模式,我們僅僅需要在新添加的地方添加相應(yīng)需要的類型即可,不需要改動(dòng)其它地方的客戶端代碼(很大程度上提高了代碼的復(fù)用性)。
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)模板方法模式
這篇文章主要介紹了php設(shè)計(jì)模式中的模板方法模式,使用php實(shí)現(xiàn)模板方法模式,感興趣的小伙伴們可以參考一下2015-12-12php使用變量動(dòng)態(tài)創(chuàng)建類的對象用法示例
這篇文章主要介紹了php使用變量動(dòng)態(tài)創(chuàng)建類的對象,涉及php面向?qū)ο蟪绦蛟O(shè)計(jì)中對象的動(dòng)態(tài)創(chuàng)建相關(guān)操作技巧,需要的朋友可以參考下2017-02-02php實(shí)現(xiàn)執(zhí)行某一操作時(shí)彈出確認(rèn)、取消對話框
當(dāng)執(zhí)行某一操作比如確認(rèn)或者取消時(shí)如何彈出對話框,針對這個(gè)需求,下面使用php來實(shí)現(xiàn)下,感興趣的朋友不要錯(cuò)過2013-12-12php array_intersect()函數(shù)使用代碼
array_intersect() 返回一個(gè)數(shù)組,該數(shù)組包含了所有在 array1 中也同時(shí)出現(xiàn)在所有其它參數(shù)數(shù)組中的值。注意鍵名保留不變。2009-01-01PHP中Socket連接及讀寫數(shù)據(jù)超時(shí)問題分析
這篇文章主要介紹了PHP中Socket連接及讀寫數(shù)據(jù)超時(shí)問題,分析了Socket連接的相關(guān)設(shè)置與使用技巧,需要的朋友可以參考下2016-07-07php實(shí)現(xiàn)讀取手機(jī)客戶端瀏覽器的類
這篇文章主要介紹了php實(shí)現(xiàn)讀取手機(jī)客戶端瀏覽器的類,可實(shí)現(xiàn)取手機(jī)號碼,瀏覽器報(bào)頭信息,取得手機(jī)類型,取得手機(jī)IP等功能,需要的朋友可以參考下2015-01-01數(shù)據(jù)結(jié)構(gòu)之利用PHP實(shí)現(xiàn)二分搜索樹
這篇文章主要給大家介紹了關(guān)于數(shù)據(jù)結(jié)構(gòu)之利用PHP實(shí)現(xiàn)二分搜索樹的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10php 輸出緩沖 Output Control用法實(shí)例詳解
這篇文章主要介紹了php 輸出緩沖 Output Control用法,結(jié)合實(shí)例形式詳細(xì)分析了php 輸出緩沖 Output Control基本概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-03-03