whi*_*edb 5 java design-patterns modularity
我已经开始用 Java 绘制插头,比如使用贝塞尔曲线的连接器,但只是视觉上的东西。

然后我开始考虑制作某种带有输入和输出的模块化东西。但是,我对如何实施它的决定感到非常困惑。比方说,例如,模块化合成器或 Pure Data / MaxMSP 概念,其中您有模块,并且任何模块都有属性、输入和输出。
我想知道您是否知道我应该使用哪些关键字来搜索要阅读的内容。我需要一些关于这种接口的基本示例或抽象想法。有没有适合这个想法的设计模式?
mik*_*ike -1
由于您要求关键字“实时设计模式”,因此过度的 OOP 通常是实时应用程序的性能瓶颈,因为所有对象(我猜在某种程度上多态性)都会增加开销。
为什么要实时应用?您提供的图表看起来非常复杂,您可以并行多次处理传入数据,将其拆分、合并等。
图中的每个节点都会添加不同的效果并进行不同的计算,其中某些计算可能比其他计算花费更长的时间 - 这得出的结论是,为了获得统一的数据(声音),您必须保持数据同步。这不是一件简单的任务。
我想其他一些关键词是:声音处理、过滤器。或者您可以向该领域的公司询问文献。
抛开时间敏感性不谈,我构建了一个小小的 OOP 示例,也许这样的方法对于不太复杂的场景就足够了
public class ConnectionCable implements Runnable, Closeable {
private final InputLine in;
private final OutputLine out;
public ConnectionCable(InputLine in, OutputLine out) {
this.in = in;
this.out = out;
// cable connects open lines and closes them upon connection
if (in.isOpen() && out.isOpen()) {
in.close();
out.close();
}
}
@Override
public void run() {
byte[] data = new byte[1024];
// cable connects output line to input line
while (out.read(data) > 0)
in.write(data);
}
@Override
public void close() throws IOException {
in.open();
out.open();
}
}
interface Line {
void open();
void close();
boolean isOpen();
boolean isClosed();
}
interface InputLine extends Line {
int write(byte[] data);
}
interface OutputLine extends Line {
int read(byte[] data);
}
Run Code Online (Sandbox Code Playgroud)