码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之装饰器模式

时间:2018-01-10 11:40:47      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:java   app   包装模式   red   适配器   body   .com   说明   javaio   

装饰器模式,顾名思义,就是将某个类重新装扮一下,使得它比原来的功能更加强大,这就是装饰器所要达到的目的。但是作为原来这个类的使用者,不应感受到装饰前和装饰后有什么不同,否则就破坏了原有类的结构了,所以装饰器模式要做到对被装饰类的使用者透明,这是对装饰器模式最基本的要求。

装饰器模式的结构

下图是一个装饰器模式的典型的类图结构,各个角色的描述如下:

  • Component:抽象组件角色,定义一组抽象的接口,规定被装饰组件有哪些功能
  • ConcreteComponent:实现这个抽象组件的所有功能
  • Decorator:装饰器角色,它持有Component角色的引用,定义一个和抽象组件一致的接口-
  • ConcreteDecorator:装饰器的具体实现,负责实现装饰器角色定义的功能

技术分享图片

Java IO中的装饰器模式

装饰器模式的作用就是赋予被装饰器的类更多的功能,在Java IO类库中,有很多不同的功能组合情况,这些不同的功能组合就是使用装饰器模式实现的,下面以FilterInputStream为例来说明。

技术分享图片

InputStream类就是以抽象组件的角色存在的,而FileInputStream就是具体实现抽象组件所有功能的组件,FilterInputStream是装饰器角色,他实现了InputStream的所有接口,并且持有InputStream对象的引用,BufferedInputStream就是具体装饰器的实现者,它给InputStream添加了附加功能,使得InputStream读取的数据放在内存中,提升读取效率。

装饰器模式和适配器模式的区别

装饰器模式和适配器模式都有一个别名就是包装模式(wrapper),它们都起到了包装一个类或则对象的作用,但是它们的使用目的不同,装饰器模式不改变被包装的接口,仅仅是争强原来接口的功能,而适配器模式要将一个接口转变为另一个接口,目的是通过改变接口达到重复使用。

设计模式之装饰器模式

标签:java   app   包装模式   red   适配器   body   .com   说明   javaio   

原文地址:https://www.cnblogs.com/senlinyang/p/8256948.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!