menbbo

导航

 

介绍

装饰器模式也叫包装者模式,属于结构型模式,它作为现有类的包装,允许向一个现有对象添加新的功能,

同时也不改变其结构。

给对象添加功能,有两种方式:继承或则关联组合,讲一个类的对象嵌入另一个对象中,由另一个对象决定

对嵌入对象的行为来增强功能,这个是装饰器模式,比继承模式更加灵活。

应用场景

以动态、透明的方式给单个对象添加职责,但又不能改变其架构。

jdk源码里面使用最多的就是IO流,大量使用装饰设计模式。

角色

抽象组件、被装饰者、装饰者组件(持有抽象组件的引用)、具体装饰物。

优点

装饰模式与继承的关系都是扩展对象的功能,但是装饰器模式可提供比继承更多的灵活性。

使用不同的具体装饰类,以及这些类的排列组合,可以创造出不同行为的组合,原有代码无需改变,符合开闭原则。

缺点

装饰模式增加了许多子类,如果过度使用会使程序变得很复杂;

增大的系统的复杂度,加大学习与理解的难度。

装饰器模式和桥接模式对比

相同点都是通过封装其他对象达到设计的目的,和对象适配器也类似,有的也叫半装饰设计模式;

桥接模式没有装饰者被装饰者的主次之分,桥接和被桥接则是平等的,不用继承自同一个父类。

源码中使用

inputstream

抽象组件:inputStream;被装饰者:FileInputStream、ByteArrayInputStream;装饰着组件:FilterInpuStream;

具体装饰者:BufferedInputStream、DataInputStream。

 

posted on 2022-03-05 15:00  menbbo  阅读(13)  评论(0编辑  收藏  举报