设计模式---装饰
2013-12-27 09:57
351 查看
一、功能
动态地给一个对象添加一些额外的功能。
二、优缺点
优点:Decorator的目的是"动态的给一个对象添加一些额外的功能"。其关键之处在于"动态"和"对象"上。传统上依靠子类继承来实现功能的扩展,它针对的是整个类。但Decorator不使用继承,所以它只是针对单个对象实例进行功能的扩展。并且,从下面的示例代码中也可以看出,可以在运行时动态地、灵活地对功能进行组装。
三、示例代码
上面代码的关键之处在于Decorator的构造函数中传入了一个Component*指针,表明了它要作用的对象。
动态地给一个对象添加一些额外的功能。
二、优缺点
优点:Decorator的目的是"动态的给一个对象添加一些额外的功能"。其关键之处在于"动态"和"对象"上。传统上依靠子类继承来实现功能的扩展,它针对的是整个类。但Decorator不使用继承,所以它只是针对单个对象实例进行功能的扩展。并且,从下面的示例代码中也可以看出,可以在运行时动态地、灵活地对功能进行组装。
三、示例代码
namespace DesignPattern_Decorator { // class Component class Component { public: virtual ~Component() {} virtual void operation() = 0 ; } ; // class ConcreteComponent class ConcreteComponent : public Component { public: virtual ~ConcreteComponent() {} virtual void operation() { // some operations } } ; // class Decorator class Decorator : public Component { public: Decorator(Component *pComponent) : _component(pComponent) { assert(_component) ; } virtual ~Decorator() { delete _component ; } virtual void operation() { _component->operation() ; } private: Component *_component ; } ; // class ConcreteDecoratorA class ConcreteDecoratorA : public Decorator { public: ConcreteDecoratorA(Component *pComponent) : Decorator(pComponent) {} virtual void operation() { // some operations Decorator::operation() ; // some operations } } ; // class ConcreteDecoratorB class ConcreteDecoratorB : public Decorator { public: ConcreteDecoratorB(Component *pComponent) : Decorator(pComponent) {} virtual void operation() { // some operations Decorator::operation() ; // some operations } } ; } 客户端代码: { using namespace DesignPattern_Decorator ; Component *p = new ConcreteDecoratorB( new ConcreteDecoratorA( new ConcreteComponent())) ; p->operation() ; }
上面代码的关键之处在于Decorator的构造函数中传入了一个Component*指针,表明了它要作用的对象。
相关文章推荐
- 设计模式:装饰模式-decorator
- 详略。。。设计模式4——装饰模式。。。studying
- Java设计模式之装饰模式
- 黑马程序员-Java学习笔记之设计模式(单例设计模式,装饰设计模式,模板设计模式)
- 27 API-反射(类的加载器,反射的使用,动态代理)&设计模式(装饰设计模式,模版设计模式)&JDK新特性(JDK5,JDK6,JDK7,DK8)
- 设计模式9:装饰模式【结构型】
- python与设计模式之二 装饰器模式(以dota为例)
- 设计模式 (十)装饰模式(Decorator)
- 设计模式(四)装饰模式(结构型)
- Java设计模式之------装饰模式
- 设计模式之装饰模式
- Java---设计模块(装饰模式)
- 【设计模式】装饰者模式-明月装饰了你的窗子
- Java设计模式百例 - 装饰器模式
- 装饰设计模式简析
- 设计模式(3)-结构型-装饰模式(Decorator)
- 设计模式——装饰设计模式
- 12.IO(一)【IO流概述】【字符流】【字符流缓冲区】【装饰设计模式】【字节流】
- 设计模式之--装饰模式
- c++设计模式--装饰模式