模块化设计模式

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)