Java 7 - 通过 class 层次结构流式传输数据
Java 7 - Stream data through class hierarchy
我正在尝试编写某种 class 层次结构,更具体地说,是一个执行层次结构。数据应通过每个元素沿层次结构向下传递,同时在此过程中进行修改。并发不是问题,尽管它是多线程程序的一部分。 澄清一下:我不想要一个classes的层次结构,我想要一个实例层次结构。像这样:
public abstract class ExecutionElement extends OutputStream {
private ExecutionElement child;
private InputStream input;
public ExecutionElement(InputStream input) {
this.input = input;
}
public ExecutionElement(ExecutionElement parent) {
parent.addChild(this);
}
private void addChild(ExecutionElement child) {
this.child = child;
}
protected PipedOutputStream processData() {
// process the data according to the purpose of the current element.
// pseudocode from here
// this is the root element, read from the InputStream and write to child element
}
protected PipedOutputStream processData(PipedOutputStream data) {
// this is an intermediary element, read from PipedOutputStream -->
// convert the stream to pipedInputStream
// process data
// write to child
}
}
想法如下:我将某种InputStream
传递给层次结构的根元素。然后,此数据由根元素修改(插入或删除流的特定部分),然后传递给子元素。冲洗并重复。
整个过程必须尽可能高效。当然,出于不同的目的,ExecutionElement
会有几种不同的实现。最近我一直在考虑使用 PipedInputStream
和 PipedOutputStream
来加快速度,但它对我还不起作用。此外,由于多种原因,我无法使用外部库。我们正在为项目使用 Java 7,因此我们不能按照建议使用 Streams,因为这是 Java 8 的功能。
问题是:对于层次结构的设计,您有什么意见/建议吗?我应该遵循哪些具体的设计原则?
提前致谢。
您基本上想要实现 Pipeline Pattern
。
如果您要传递字节数据,那么您已经使用 InputStream/OutputStream
类(您可以在其中扩展 FilterInputStream
和 FilterOutputStream
).如果您打算传递对象,我建议您创建自己的 "object stream" 类(不要使用 ObjectInputStream/ObjectOutputStream
,它们用于序列化)。
我正在尝试编写某种 class 层次结构,更具体地说,是一个执行层次结构。数据应通过每个元素沿层次结构向下传递,同时在此过程中进行修改。并发不是问题,尽管它是多线程程序的一部分。 澄清一下:我不想要一个classes的层次结构,我想要一个实例层次结构。像这样:
public abstract class ExecutionElement extends OutputStream {
private ExecutionElement child;
private InputStream input;
public ExecutionElement(InputStream input) {
this.input = input;
}
public ExecutionElement(ExecutionElement parent) {
parent.addChild(this);
}
private void addChild(ExecutionElement child) {
this.child = child;
}
protected PipedOutputStream processData() {
// process the data according to the purpose of the current element.
// pseudocode from here
// this is the root element, read from the InputStream and write to child element
}
protected PipedOutputStream processData(PipedOutputStream data) {
// this is an intermediary element, read from PipedOutputStream -->
// convert the stream to pipedInputStream
// process data
// write to child
}
}
想法如下:我将某种InputStream
传递给层次结构的根元素。然后,此数据由根元素修改(插入或删除流的特定部分),然后传递给子元素。冲洗并重复。
整个过程必须尽可能高效。当然,出于不同的目的,ExecutionElement
会有几种不同的实现。最近我一直在考虑使用 PipedInputStream
和 PipedOutputStream
来加快速度,但它对我还不起作用。此外,由于多种原因,我无法使用外部库。我们正在为项目使用 Java 7,因此我们不能按照建议使用 Streams,因为这是 Java 8 的功能。
问题是:对于层次结构的设计,您有什么意见/建议吗?我应该遵循哪些具体的设计原则?
提前致谢。
您基本上想要实现 Pipeline Pattern
。
如果您要传递字节数据,那么您已经使用 InputStream/OutputStream
类(您可以在其中扩展 FilterInputStream
和 FilterOutputStream
).如果您打算传递对象,我建议您创建自己的 "object stream" 类(不要使用 ObjectInputStream/ObjectOutputStream
,它们用于序列化)。