定義:
裝飾者模式就是不修改原類代碼和繼承的情況下動態擴展類的功能。傳統的編程模式都是子類繼承父類實現方法重載,使用裝飾器模式,只需添加一個新的裝飾器對象,更加靈活,避免類數量和層次過多。
角色:
Component(被裝飾對象基類)
ConcreteComponent(具體被裝飾對象)
Decorator(裝飾者基類)
ContreteDecorator(具體的裝飾者類)
示例代碼:
//被裝飾者基類interface Component{ html' target='_blank'>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; }} //具體裝飾類Aclass 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; }} //具體裝飾類Bclass 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常用的三種遍歷樹的技巧php實現mysql數據庫分卷備份
以上就是簡述PHP設計模式中的裝飾者模式的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答