PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例
定義:
裝飾者模式就是不修改原類代碼和繼承的情況下動(dòng)態(tài)擴(kuò)展類的功能。傳統(tǒng)的編程模式都是子類繼承父類實(shí)現(xiàn)方法重載,使用裝飾器模式,只需添加一個(gè)新的裝飾器對(duì)象,更加靈活,避免類數(shù)量和層次過(guò)多。
角色:
Component(被裝飾對(duì)象基類)
ConcreteComponent(具體被裝飾對(duì)象)
Decorator(裝飾者基類)
ContreteDecorator(具體的裝飾者類)
示例代碼:
//被裝飾者基類 interface Component { public function operation(); } //裝飾者基類 abstract class Decorator implements Component { protected $component; public function __construct(Component $component) { $this->component = $component; } public function operation() { $this->component->operation(); } } //具體裝飾者類 class ConcreteComponent implements Component { public function operation() { echo 'do operation'.PHP_EOL; } } //具體裝飾類A class ConcreteDecoratorA extends Decorator { public function __construct(Component $component) { parent::__construct($component); } public function operation() { parent::operation(); $this->addedOperationA(); // 新增加的操作 } public function addedOperationA() { echo 'Add Operation A '.PHP_EOL; } } //具體裝飾類B class ConcreteDecoratorB extends Decorator { public function __construct(Component $component) { parent::__construct($component); } public function operation() { parent::operation(); $this->addedOperationB(); } public function addedOperationB() { echo 'Add Operation B '.PHP_EOL; } } class Client { public static function main() { /* do operation Add Operation A */ $decoratorA = new ConcreteDecoratorA(new ConcreteComponent()); $decoratorA->operation(); /* do operation Add Operation A Add Operation B */ $decoratorB = new ConcreteDecoratorB($decoratorA); $decoratorB->operation(); } } Client::main();
- PHP設(shè)計(jì)模式之裝飾器模式定義與用法詳解
- 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)裝飾器模式(decorator)
- PHP設(shè)計(jì)模式之裝飾器模式實(shí)例詳解
- PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例
- PHP設(shè)計(jì)模式之裝飾者模式
- PHP設(shè)計(jì)模式之?dāng)?shù)據(jù)訪問(wèn)對(duì)象模式(DAO)原理與用法實(shí)例分析
- PHP設(shè)計(jì)模式之建造者模式(Builder)原理與用法案例詳解
- PHP設(shè)計(jì)模式之適配器模式(Adapter)原理與用法詳解
- PHP設(shè)計(jì)模式之策略模式(Strategy)入門(mén)與應(yīng)用案例詳解
- PHP經(jīng)典面試題之設(shè)計(jì)模式(經(jīng)常遇到)
- php設(shè)計(jì)模式小結(jié)
- PHP設(shè)計(jì)模式之裝飾器(裝飾者)模式(Decorator)入門(mén)與應(yīng)用詳解
相關(guān)文章
PHP實(shí)現(xiàn)隨機(jī)調(diào)用圖片的示例代碼
在Web開(kāi)發(fā)中,使用PHP可以輕松實(shí)現(xiàn)各種有趣的功能,這篇文章主要為大家介紹了如何使用PHP來(lái)實(shí)現(xiàn)隨機(jī)調(diào)用圖片,感興趣的小伙伴可以了解一下2023-08-08PHP+Ajax檢測(cè)用戶名或郵件注冊(cè)時(shí)是否已經(jīng)存在實(shí)例教程
這篇文章主要介紹了PHP+Ajax檢測(cè)用戶名或郵件注冊(cè)時(shí)是否已經(jīng)存在實(shí)例教程,是非常常見(jiàn)的一個(gè)重要功能,常用于論壇注冊(cè)部分或會(huì)員注冊(cè)部分,需要的朋友可以參考下2014-08-08PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字?jǐn)?shù)
PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字?jǐn)?shù),需要的朋友可以參考下。2011-11-11php使用$_POST或$_SESSION[]向js函數(shù)傳參
php向js函數(shù)傳參的方法有多種,可以使用$_POST也可使用$_SESSION[' '],也可用echo語(yǔ)句進(jìn)行輸出,需要的朋友可以參考下2014-09-09PHP內(nèi)核介紹及擴(kuò)展開(kāi)發(fā)指南—基礎(chǔ)知識(shí)
本章簡(jiǎn)要介紹一些Zend引擎的內(nèi)部機(jī)制,這些知識(shí)和Extensions密切相關(guān),同時(shí)也可以幫助我們寫(xiě)出更加高效的PHP代碼。2011-09-09