首页 > 代码库 > 装饰器模式
装饰器模式
典型的装饰器模式类结构图:
其中各个角色描述如下:
- Component: 抽象组件接口,定义一组抽象的接口, 规定这个被装饰组件都有哪些功能.
- ConcreteComponent: 实现抽象组件对的所有功能
- Decorator: 装饰器角色, 它持有一个Component实例对象的引用, 定义一个与抽象组件一致的接口
- ConreteDecorator: 具体的装饰器实现类, 负责实现装饰器角色定义的功能.
Java I/O中装饰器模式的使用, 以FilterInputStream为例介绍装饰器模式的使用
InputStream就是以抽象组件存在的, 而FileInputStream就是具体的组件类, 它实现了抽象组件的所有接口; FileInputStream无疑就是装饰角色, 它实现了InputStream的所有接口,
并持有InputStream的实例对象的引用; BufferedInputStream是具体的装饰器类实现者.它给InputStream类附件了功能, 这个装饰器类的作用就是使得InputStream读取的数据保存在内存中,而提高读取的性能, 与这个装饰器类有类似的功能还有LineNumberInputStream类,它的作用是提高按行读取数据的功能, 他们都是InputStream类增强了功能,或者提升了性能.
适配器模式与装饰器模式的区别:
装饰器模式与装饰器模式都有一个别名(Wrapper),它们看似都是起到包装一个类或对象的作用,但是使用他们的目的很不一样. 适配器模式的意义是将一个接口转变成另外一个接口, 他的目的是通过改变接口来达到重复使用的目的;而装饰器模式不是要改变装饰器对象的接口,而是恰恰要保持原有的接口,但是争强原有对象的功能,或者改变原有对象的处理方法而提升性能.所以这两个设计模式IDE目的是不同的.
装饰器模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。