《PHP學(xué)習(xí):PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例》要點(diǎn):
本文介紹了PHP學(xué)習(xí):PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
界說(shuō):PHP編程
裝飾者模式就是不修改原類代碼和繼承的情況下動(dòng)態(tài)擴(kuò)展類的功能.傳統(tǒng)的編程模式都是子類繼承父類實(shí)現(xiàn)辦法重載,使用裝飾器模式,只需添加一個(gè)新的裝飾器對(duì)象,更加靈活,避免類數(shù)量和層次過(guò)多.PHP編程
腳色:PHP編程
Component(被裝飾工具基類)
ConcreteComponent(具體被裝飾工具)
Decorator(裝飾者基類)
ContreteDecorator(具體的裝飾者類)PHP編程
示例代碼:PHP編程
//被裝飾者基類 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(); } } //詳細(xì)裝飾者類 class ConcreteComponent implements Component { public function operation() { echo 'do operation'.PHP_EOL; } } //詳細(xì)裝飾類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; } } //詳細(xì)裝飾類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學(xué)習(xí):PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10921.html