java 中的设计模式无法识别

Design Pattern in java unrecognized

我想知道下面代码的设计模式的名称是什么。

FileInputStream fin = new FileInputStream("X.zip");  
BufferedInputStream bin = new BufferedInputStream(fin);
ZipInputStream zin = new ZipInputStream(bin);

谁能帮帮我?谢谢。

装饰器模式

创建的每个新实例都以动态方式向现有实例添加新行为。
它是动态的,因为行为是在运行时添加的,而不是 class 本身。

在您的示例中,您创建了一个具有基本功能的简单 FileInputStream,您用添加缓冲行为的 BufferedInputStream 装饰,最后用 BufferedInputStream 装饰实例ZipInputStream 提供压缩功能。

你也可以这样写你的代码:

ZipInputStream zip = new ZipInputStream(new BufferedInputStream(new FileInputStream("X.zip")));

BufferedInputStreamZipInputStream 均源自 FilterInputStream 抽象 class,旨在丰富 InputStream 实例的行为。
javadoc 对此进行了解释:

A FilterInputStream contains some other input stream, which it uses as its basic source of data, possibly transforming the data along the way or providing additional functionality. The class FilterInputStream itself simply overrides all methods of InputStream with versions that pass all requests to the contained input stream. Subclasses of FilterInputStream may further override some of these methods and may also provide additional methods and fields.