装饰者设计模式(Decorator)
类A:method();
类B:继承类A 重写method();
继承实现代码的扩展的弊端:
- 增强了两个类的耦合度
- 受到了Java中单继承的限制。
装饰者设计模式:在不改变原类的情况下,对类的功能进行扩展
装饰设计模式的要求
- 在装饰类中,必须包含被装饰对象
- 在扩展功能时,需要在装饰类的构造方法中对被装饰对象进行初始化
- 在扩展的方法中,需要通过被装饰者的引用调用需要扩展的方法。
在IO中大量的使用到了装饰设计模式。
在使用处理流的时候,进行关闭操作时,只需要关闭处理流就可以了:
使用了装饰设计模式,关闭外层的时候,就会自动调用关闭内层的方法,所以关闭外层即可关闭内层所有的被装饰的流。