PHP设计模式之装饰者模式代码实例
2015-05-11 00:00
1976 查看
定义:
装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。
角色:
Component(被装饰对象基类)
ConcreteComponent(具体被装饰对象)
Decorator(装饰者基类)
ContreteDecorator(具体的装饰者类)
示例代码:
装饰者模式就是不修改原类代码和继承的情况下动态扩展类的功能。传统的编程模式都是子类继承父类实现方法重载,使用装饰器模式,只需添加一个新的装饰器对象,更加灵活,避免类数量和层次过多。
角色:
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设计模式之观察者模式(Observer)详细介绍和代码实例
- PHP设计模式之观察者模式(Observer)详细介绍和代码实例
- PHP设计模式之适配器模式代码实例
- PHP设计模式之适配器模式代码实例
- Java设计模式之装饰者模式详解和代码实例
- 145 php 设计模式代码和应用场景实例
- 设计模式php实例:装饰者模式
- PHP设计模式之观察者模式(Observer)详细介绍和代码实例
- PHP设计模式之适配器模式代码实例
- 设计模式与实例代码:Visitor模式
- 29. 代码实例-设计模式-模板方法
- PHP设计模式之装饰器模式实例详解
- PHP设计模式之工厂方法设计模式实例分析
- 设计模式与实例代码:Template Method模式
- 简单了解设计模式中的装饰者模式及C++版代码实现
- PHP设计模式之装饰者模式
- php中使用接口实现工厂设计模式的代码
- android 设计模式 ——装饰者模式(给你的代码穿上漂亮的衣服 )
- 《Head First 设计模式》代码之PHP版