gpt4 book ai didi

java - 为什么 FilterOutputStream 是一个具体的类?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:27 25 4
gpt4 key购买 nike

Java 的 FilterOutputStream 是 Java 中 Stream 装饰器模式的一部分。它是中间的基础装饰器类。

来自文档:

The class FilterOutputStream itself simply overrides all methods of OutputStream with versions that pass all requests to the underlying output stream. Subclasses of FilterOutputStream may further override some of these methods as well as provide additional methods and fields.

我的学生问我为什么这门课是具体的,我很难想出一个好的理由。这只是一个疏忽吗?

有什么想法吗?

最佳答案

从技术上讲,它不一定是抽象的,但如果您从严格的 OO 角度来看,这是一种疏忽,是的。

实例化一个普通的 FilterOutputStream 是没有意义的,它是抽象类的教科书定义。事实上,Javadoc 把它拼写得更清楚,将这个类的用途定义为:

This class is the superclass of all classes that filter output streams. These streams sit on top of an already existing output stream (the underlying output stream) which it uses as its basic sink of data, but possibly transforming the data along the way or providing additional functionality.

由于它的唯一目的是作为其他实现的父类(super class),将其标记为abstract 是非常合理的。

这个故事的寓意是,仅仅因为它是一个 java.* 类,并不意味着它是好的 OO。有很多妥协的例子,有时甚至是彻头彻尾的糟糕设计,其中一些甚至更糟。

关于java - 为什么 FilterOutputStream 是一个具体的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39367078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com