首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之装饰器设计模式

设计模式之装饰器设计模式

作者头像
二十三年蝉
发布2018-08-01 10:28:29
5010
发布2018-08-01 10:28:29
举报
文章被收录于专栏:闻道于事闻道于事

Java的IO流使用了一种装饰器设计模式。它将IO流分成底层节点流和上层处理流,其中节点流用于和底层的物流存储结点直接关联——不同的物流节点获取该结点流的方式可能存在一定差异,但程序可以把不同的物理节点流包装成统一的处理流,总而允许程序使用统一的输入、输出代码来读取不同的物流存储结点的资源。

简单来说,装饰器模式就是将某个类重新装扮一下,使它比原来更漂亮或功能更强大,但是这个类袁蓓的使用者不会感受到装饰前和装饰后的区别,所以装饰器模式要做到对装饰类的使用者透明。

在由InputStream、OutputStream、Reader和Writer代表的等级结构内部,有一些流处理器可以对另一些流处理器起到装饰作用,形成新的、具有改善了的功能的流处理器。

装饰器模式的结构:

Component:抽象组件角色,定义一组抽象接口,规定这个被装饰组件有哪些功能。

ConcreteComponent:实现这个抽象组件所有的功能。

Decorator:装饰器角色,它持有一个Component对象实例的引用,定义一个抽象组件一致的接口。

ConcreteDecorator:具体的装饰器是闲着,负责实现装饰器角色定义的功能。

Java IO中的装饰器模式

FilterInputStream的类结构图: 

InputStream类就是以抽象组件存在的;而就是具体组件,他实现了抽象组件的所有接口;FilterInputStream类就是装饰角色,他实现了InputStream类的所有接口,并且持有InputStream的对象实例的引用;BufferedInputStream就是具体的装饰器实现者,他给InputStream类附加了功能,这个装饰器类的作用就是是的InputStream读取的数据保存在内存中,而提高读取的性能。

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

装饰器模式和适配器模式都有一个别名就是包装模式,他们都是起到包装一个类或对象的作用。但是他们的目的不同,适配器模式的意义试讲一个接口转变成另一个接口,他的目的之通过改变接口来达到重复使用的目的;而装饰器模式则是要保留原有的接口,但是增强原有对象的功能,或者改变原有对象的处理方法而提升性能。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档