手机
当前位置:查字典教程网 >编程开发 >php教程 >PHP设计模式之装饰者模式代码实例
PHP设计模式之装饰者模式代码实例
摘要:定义:装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新...

定义:

装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。

角色:

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设计模式之装饰者模式代码实例】相关文章:

PHP SPL标准库之文件操作

PHP设计模式之装饰者模式代码实例

php生成zip文件类实例

PHP中的traits实现代码复用使用实例

MVC模式的PHP实现

PHP SPL标准库之数据结构堆(SplHeap)简单使用实例

PHP5.0对象模型探索之抽象方法和抽象类

PHP 双链表(SplDoublyLinkedList)简介和使用实例

论坛头像随机变换代码

PHP 5.0对象模型深度探索之绑定

精品推荐
分类导航