本文實(shí)例講述了PHP設(shè)計(jì)模式之裝飾器模式定義與用法。分享給大家供大家參考,具體如下:
裝飾器模式:
如果已有對(duì)象的部分內(nèi)容或功能性發(fā)生改變,但是不需要修改原始對(duì)象的結(jié)構(gòu)或不使用繼承,動(dòng)態(tài)的擴(kuò)展一個(gè)對(duì)象的功能,則應(yīng)該使用裝飾器模式。
簡(jiǎn)單點(diǎn)說(shuō):就是我們不應(yīng)該去修改已有的類(lèi),而是通過(guò)創(chuàng)建另外一個(gè)裝飾器類(lèi),通過(guò)這個(gè)裝飾器類(lèi)去動(dòng)態(tài)的擴(kuò)展其需要修改的內(nèi)容,這樣做的好處就是————
代碼引用自《PHP設(shè)計(jì)模式》。
/** * 被修飾類(lèi) 現(xiàn)在的需求: 要求能夠動(dòng)態(tài)為CD添加音軌、能顯示CD音軌列表。 顯示時(shí)應(yīng)采用單行并且為每個(gè)音軌都以音軌好為前綴。 */ class CD { public $trackList; function __construct() { # code... $this->trackList=array(); } public function addTrack($track){ $this->trackList[]=$track; } public function getTrackList(){ $output=" "; foreach ($this->trackList as $key => $value) { # code... $output.=($key+1).") {$value}. "; } return $output; } } /* 現(xiàn)在需求發(fā)生變化: 要求將當(dāng)前實(shí)例輸出的音軌都采用大寫(xiě)形式。 這個(gè)需求并不是一個(gè)變化特別大的需求,不需要修改基類(lèi)或創(chuàng)建一個(gè)父子關(guān)系的子類(lèi),此時(shí)創(chuàng)建一個(gè)基于裝飾器模式的裝飾器類(lèi)。 */ class CDTrackListDecoratorCaps{ private $_cd; public function __construct(CD $CD){ $this->_cd=$CD; } public function makeCaps(){ foreach ($this->_cd->trackList as $key => $value) { # code... $this->_cd->trackList[$key]=strtoupper($value); //轉(zhuǎn)換成大寫(xiě) } } } //客戶(hù)端測(cè)試: $myCD=new CD(); $trackList=array( "what It Means", "brr", "goodBye" ); foreach ($trackList as $key => $value) { # code... $myCD->addTrack($value); } $myCDCaps=new CDTrackListDecoratorCaps($myCD); $myCDCaps->makeCaps(); print "The CD contains the following tracks:".$myCD->getTrackList();
運(yùn)行結(jié)果:
The CD contains the following tracks: 1) WHAT IT MEANS. 2) BRR. 3) GOODBYE.
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
標(biāo)簽:白銀 衡陽(yáng) 辛集 廊坊 崇左 太原 鄂州 綏化
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例》,本文關(guān)鍵詞 PHP,設(shè)計(jì)模式,之,裝飾,器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。