PHP设计模式之装饰者模式代码实例
更新时间:2015年05月11日 10:13:02 投稿:junjie
这篇文章主要介绍了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获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
这篇文章主要介绍了php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法,通过一个API接口调用实现针对访客信息的相关查询功能,非常简单实用,需要的朋友可以参考下2015-07-07php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置...2006-11-11PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数,需要的朋友可以参考下。2011-11-11
最新评论