【发布时间】:2011-11-17 13:59:34
【问题描述】:
对于在 Java 中创建一个既是 InputStream 又是 OutputStream 的 Pipe 对象有什么好的建议吗,因为 Java 没有多重继承,并且两个流都是抽象类而不是接口?
【问题讨论】:
-
也许……“优先考虑‘对象组合’而不是‘类继承’。” (四人帮 1995:20)
标签: java
对于在 Java 中创建一个既是 InputStream 又是 OutputStream 的 Pipe 对象有什么好的建议吗,因为 Java 没有多重继承,并且两个流都是抽象类而不是接口?
【问题讨论】:
标签: java
【讨论】:
PipedInputStream.read() 将阻塞调用线程,直到关联的PipedOutputStream.write() 在另一个线程中被调用。
检查Pipe 类以获得现成的实现
【讨论】:
您不会有一个实例同时用作输入流和输出流。相反,您可以拥有一个 Pipe 对象,该对象封装(即组合)一个用于读取的 InputStream 和一个用于写入的 OutputStream。
与标准 API 中的 System.in 和 System.out 非常相似。
【讨论】:
这是一个很好的例子,您不需要多重继承,而且您以这种方式提出问题的事实让我有点担心。
在这种情况下,您将拥有一个具有输入流和输出流的类。无需扩展任何东西或使用接口。
在更改您的代码以执行此操作后,请阅读这篇关于组合与继承的文章: http://www.artima.com/lejava/articles/designprinciples4.html
【讨论】: