Java IO 类的“奇怪”用法

Java IO 类库非常庞大和复杂,有几十个类,负责 IO 数据的读取和写入。如果对 Java IO 类做一下分类,我们可以从下面两个维度将它划分为四类。具体如下所示:

image.png

子类:

image.png

基于继承的设计方案

使用组合替代继承可以减少类.

基于装饰器模式的设计方案

  • 装饰器类和原始类继承同样的父类,这样我们可以对原始类“嵌套”多个装饰器类
  • 装饰器类是对功能的增强,这也是装饰器模式应用场景的一个重要特点

符合“组合关系”这种代码结构的设计模式有很多,比如之前讲过的代理模式、桥接模式,还有现在的装饰器模式。尽管它们的代码结构很相似,但是每种设计模式的意图是不同的。就拿比较相似的代理模式和装饰器模式来说吧,代理模式中,代理类附加的是跟原始类无关的功能,而在装饰器模式中,装饰器类附加的是跟原始类相关的增强功能。