Decorator Pattern
2015-07-20 15:22
232 查看
1.Decorator 模式通过组合的方式提供了一种给类增加职责(操作)的方法。
2.Decorator模式结构图
main.cpp
4.Decorator模式的讨论
为了多态,通过父类指针指向其具体子类,但是这就带来另外一个问题,当具体子类要添加新的职责,就必须向其父类添加一个这个职责的抽象接口,否则是通过父类指针是调用不到这个方法了。这样处于高层的父类就承载了太多的特征(方法),并且继承自这个父类的所有子类都不可避免继承了父类的这些接口,但是可能这并不是这个具体子类所需要的。而在Decorator模式提供了一种较好的解决方法,当需要添加一个操作的时候就可以通过Decorator模式来解决,你可以一步步添加新的职责。
2.Decorator模式结构图
//main.cpp #include "Decorator.h" #include <iostream> using namespace std; int main(int argc,char* argv[]) { Component* com = new ConcreteComponent(); Decorator* dec = new ConcreteDecorator(com); dec->Operation(); delete dec; return 0; }
main.cpp
4.Decorator模式的讨论
为了多态,通过父类指针指向其具体子类,但是这就带来另外一个问题,当具体子类要添加新的职责,就必须向其父类添加一个这个职责的抽象接口,否则是通过父类指针是调用不到这个方法了。这样处于高层的父类就承载了太多的特征(方法),并且继承自这个父类的所有子类都不可避免继承了父类的这些接口,但是可能这并不是这个具体子类所需要的。而在Decorator模式提供了一种较好的解决方法,当需要添加一个操作的时候就可以通过Decorator模式来解决,你可以一步步添加新的职责。
相关文章推荐
- 解决Ubuntu Server 12.04换了网卡MAC地址后 网络不可用的问题.
- Swift 学习之二十一:?和 !(详解)
- c#怎样将object转换过程int型
- Is memcached a dinosaur in comparison to Redis?
- Java通过JNI调用C++
- 每天一个linux命令(37):date命令
- SQL Server中的高可用性---概念
- 常见异常
- wax
- CentOS6.5下编译安装LAMP环境
- Angular.js学习笔记
- Linux下源码包安装Apache+Mysql+Php
- JS打乱数组最高效的方法
- windows工作vim+vindbg+vs2008devenv.com
- Java计算器
- Nhibernate 三种配置方式
- BZOJ3997: [TJOI2015]组合数学(网络流)
- Poj 1236 Network of Schools (Tarjan)
- 如何把xshell的session配置文件拷贝到别的机器上
- oracle 存储过程 游标