设计模式之装饰模式
2016-03-17 16:24
363 查看
作用:此模式能够在不必改变原类文件和使用继承的情况下,动态扩展一个对象的功能。装饰模式是通过创建一个包装对象
来实现的,也就是用装饰来包裹真实的对象。
好处:
一:比继承更灵活
从为对象添加功能的角度来看,装饰模式比继承来得更灵活,继承是静态的,而且一旦继承,是所有子类都有同样的功能。
而装饰模式则把功能分离到每个装饰器中,然后通过对象组合的方式,在运行时动态的组合功能,每个被装饰的对象最终有哪些
功能,是由运行期动态组合的功能来决定的。
二:更容易复用功能
装饰模式把一系列复杂的功能分散到每个装饰器中,一般一个装饰器只实现一个功能,这样实现装饰器变得简单(注:也符
合单一职责原则),更重要的是这样有利于装饰器功能的复用,可以给一个对象增加多一个同样的装饰器,也可以把一个装饰器
用来装饰不同的对象,从而复用装饰器的功能。
三:简化高层定义
装饰模式可以通过组合装饰器的方式,给对象增添任意多的功能,因此在进行高层定义的时候,不用把所有的功能都定义出
来,而是定义最基本的就可以了,可以在使用需要的时候,组合相应的装饰器来完成需要的功能。
四:会产生很多细粒度对象
前面说过,装饰模式是把一系列复杂的功能分散到每个装饰器中,一般一个装饰器只实现一个功能,这样会产生很多细粒度
的对象,而且功能越复杂,所需要的细粒度对象就越多。
来实现的,也就是用装饰来包裹真实的对象。
好处:
一:比继承更灵活
从为对象添加功能的角度来看,装饰模式比继承来得更灵活,继承是静态的,而且一旦继承,是所有子类都有同样的功能。
而装饰模式则把功能分离到每个装饰器中,然后通过对象组合的方式,在运行时动态的组合功能,每个被装饰的对象最终有哪些
功能,是由运行期动态组合的功能来决定的。
二:更容易复用功能
装饰模式把一系列复杂的功能分散到每个装饰器中,一般一个装饰器只实现一个功能,这样实现装饰器变得简单(注:也符
合单一职责原则),更重要的是这样有利于装饰器功能的复用,可以给一个对象增加多一个同样的装饰器,也可以把一个装饰器
用来装饰不同的对象,从而复用装饰器的功能。
三:简化高层定义
装饰模式可以通过组合装饰器的方式,给对象增添任意多的功能,因此在进行高层定义的时候,不用把所有的功能都定义出
来,而是定义最基本的就可以了,可以在使用需要的时候,组合相应的装饰器来完成需要的功能。
四:会产生很多细粒度对象
前面说过,装饰模式是把一系列复杂的功能分散到每个装饰器中,一般一个装饰器只实现一个功能,这样会产生很多细粒度
的对象,而且功能越复杂,所需要的细粒度对象就越多。
相关文章推荐
- 首贴纪念
- Laravel 快速开发标准文档
- SharedPreference 存储小量数据,一般首次启动显示引导界面就用这个。
- ElasticSearch最新版本下载地址
- [leetcode] @python 114. Flatten Binary Tree to Linked List
- No valid signing identities (i.e. certificate and private key pair) matching the team ID “(null)” were found.
- 三星手机拍照,上传照片或者下载导致图片旋转90°的解决办法。
- Android获取微信公众号推送消息历史记录
- webkit linux 方向键移动焦点
- zoj 1171 sort the photo
- zoj1076 gene assembly
- SpringMVC中的DispatcherServlet详解
- Linux如何查找大文件或目录总结
- 列表翻转效果
- Leetcode 122 Best Time to Buy and Sell Stock II
- 批处理启动vm虚拟机服务 vm12启动无界面启动vm虚拟机系统 windows上如何操作服务 sc net启动关闭服务
- HiveContext VS SQLContext
- mysql运行sql文件出错
- 【JS+CSS3】实现带预览图幻灯片效果的示例代码
- 基于MFC编写Windows服务程序