PHP設(shè)計模式之裝飾者模式代碼實例
定義:
裝飾者模式就是不修改原類代碼和繼承的情況下動態(tài)擴展類的功能。傳統(tǒng)的編程模式都是子類繼承父類實現(xiàn)方法重載,使用裝飾器模式,只需添加一個新的裝飾器對象,更加靈活,避免類數(shù)量和層次過多。
角色:
Component(被裝飾對象基類)
ConcreteComponent(具體被裝飾對象)
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è)計模式之裝飾器模式定義與用法詳解
- 學習php設(shè)計模式 php實現(xiàn)裝飾器模式(decorator)
- PHP設(shè)計模式之裝飾器模式實例詳解
- PHP設(shè)計模式之裝飾器模式定義與用法簡單示例
- PHP設(shè)計模式之裝飾者模式
- PHP設(shè)計模式之數(shù)據(jù)訪問對象模式(DAO)原理與用法實例分析
- PHP設(shè)計模式之建造者模式(Builder)原理與用法案例詳解
- PHP設(shè)計模式之適配器模式(Adapter)原理與用法詳解
- PHP設(shè)計模式之策略模式(Strategy)入門與應(yīng)用案例詳解
- PHP經(jīng)典面試題之設(shè)計模式(經(jīng)常遇到)
- php設(shè)計模式小結(jié)
- PHP設(shè)計模式之裝飾器(裝飾者)模式(Decorator)入門與應(yīng)用詳解
相關(guān)文章
PHP+Ajax檢測用戶名或郵件注冊時是否已經(jīng)存在實例教程
這篇文章主要介紹了PHP+Ajax檢測用戶名或郵件注冊時是否已經(jīng)存在實例教程,是非常常見的一個重要功能,常用于論壇注冊部分或會員注冊部分,需要的朋友可以參考下2014-08-08PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字數(shù)
PHP中文處理 中文字符串截取(mb_substr)和獲取中文字符串字數(shù),需要的朋友可以參考下。2011-11-11php使用$_POST或$_SESSION[]向js函數(shù)傳參
php向js函數(shù)傳參的方法有多種,可以使用$_POST也可使用$_SESSION[' '],也可用echo語句進行輸出,需要的朋友可以參考下2014-09-09PHP內(nèi)核介紹及擴展開發(fā)指南—基礎(chǔ)知識
本章簡要介紹一些Zend引擎的內(nèi)部機制,這些知識和Extensions密切相關(guān),同時也可以幫助我們寫出更加高效的PHP代碼。2011-09-09