装饰者模式及C++实现
2013-06-28 20:50
281 查看
装饰者模式
时常会遇到这样一种情况,我已经设计好了一个接口,并且也有几个实现类,但是这时我发现我设计的时候疏忽了,忘记了一些功能,或者后来需求变动要求加入一些功能,最简单的做法就是修改接口,添加函数,然后继承类中都相应的添加实现,这样做倒也没什么问题,但是如果这种变化来个好几次或者继承类非常多,那工作量可就大了。这时大神们就发明了装饰者模式,在不修改现在有接口和实现类的基础上实现功能或者状态的添加。
从类图上看,ConcreteComponent是Component原有的继承类,而Decorator装饰者类也继承与Component,这样的是让Decorator的子类也可以方便的添加Component,而不用每个子类里面都去包含一次Component。(我的理解)
这样客户端使用的时候只需要知道ConcreteDecorator就可以直接调用Decorator的operation方法了,至于operation方法是怎么实现的以及使用的Component的哪一个子类是不需要关心的,而且添加的方法addBehavior也可以直接使用。
客户端就无法依赖于抽象了,如果addBehavior的实现方法要变了,比较好的是添加新的ConcreteDecorator子类,或者继承这个ConcreteDecorator重新实现addBehavior。
#include "Decorator.h" int main() { Component* pComponent = new ConcreteComponent(); ConcreteDecorator* pConDecorator = new ConcreteDecorator(); pConDecorator->setComponent(pComponent); pConDecorator->operation(); pConDecorator->addBehavior(); return 0; }
client.cpp
g++ -o client client.cpp Component.cpp Decorator.cpp
运行结果
相关文章推荐
- C++实现装饰者模式
- 简单了解设计模式中的装饰者模式及C++版代码实现
- 《Head First-设计模式》--装饰者模式C++实现
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 大话设计模式--装饰者模式 Decorator -- C++实现实例
- 装饰者模式 C++实现
- 大话设计模式--装饰者模式 Decorator -- C++实现实例
- 装饰者模式及C++实现
- 装饰者模式(Decorator)的c++实现(改进)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 从实现装饰者模式中思考C++指针和引用的选择
- C++实现装饰者模式
- HeadFirst设计模式 之 C++实现(三):Decorator(装饰者模式)
- 最常用的设计模式---装饰者模式(C++实现)
- 自己写的用c++实现的简单装饰者模式
- HeadFirst设计模式 之 C++实现(三):Decorator(装饰者模式)
- 转florian大神blog之 - 从实现装饰者模式中思考C++指针和引用的选择
- 设计模式-装饰者模式 C++实现
- 装饰者模式C++实现——参考《Head First设计模式》