PHP 装饰器模式
2017-01-05 14:37
274 查看
装饰器模式:是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。
【装饰器模式中主要角色】
抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。
具体组件角色(ConcreteComponent) :被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责
抽象装饰器(Decorator):维持一个指向构件Component对象的实例,并定义一个与抽象组件角色Component接口一致的接口
具体装饰器角色(ConcreteDecorator):向组件添加职责。
【原型模式PHP示例】
输出:
我要穿衣服了
穿裤子
穿体恤
【装饰器模式中主要角色】
抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。
具体组件角色(ConcreteComponent) :被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责
抽象装饰器(Decorator):维持一个指向构件Component对象的实例,并定义一个与抽象组件角色Component接口一致的接口
具体装饰器角色(ConcreteDecorator):向组件添加职责。
【原型模式PHP示例】
interface Component{ # 抽象组件角色 public function display(); } class Person implements Component { # 具体主键 被装饰者 public function display() { echo "我要穿衣服了<br/>"; } } class Clothes implements Component { # 抽象装饰者 protected $obj; public function __construct($obj) { $this->obj = $obj; } public function display() { if($this->obj){ $this->obj->display(); } } } class Trousers extends Clothes{ # 具体装饰者 public function display() { parent::display(); echo "穿裤子<br/>"; } } class Tshirt extends Clothes{ public function display() { parent::display(); echo "穿体恤<br/>"; } } $person = new Person(); $person = new Trousers($person); $person = new Tshirt($person); $person->display();
输出:
我要穿衣服了
穿裤子
穿体恤
相关文章推荐
- PHP设计模式中之装饰模式
- php设计模式 Decorator(装饰模式)
- PHP、Python和Javascript的装饰器模式对比
- php设计模式之装饰器模式
- PHP设计模式 五 (代理模式 装饰器模式)
- PHP试写装饰模式(Java、C#亦同)
- 学习php设计模式 php实现装饰器模式(decorator)
- php 设计模式 之 装饰模式
- php实现设计模式之 装饰模式
- php设计模式专题附源码(解释器模式、工厂方法模式、外观模式、装饰模式、建造者模式)
- PHP设计模式之装饰器模式,委托模式,外观模式
- php设计模式20-装饰着模式
- php之大话装饰模式
- php 设计模式 之 装饰模式
- php面向对象之装饰模式
- [php]php设计模式 Decorator(装饰模式)
- php面向对象开发之——装饰模式
- php 装饰模式
- 设计模式入门-装饰器模式(php版)
- 学习php设计模式 php实现装饰器模式(decorator)