我有三个类,分别是ABC。基本思想是,类A将消息传递给B并等待,基于该消息B将消息传递给C。最后,在C处理该消息之后,它通知A继续其功能。现在,这形成了一个圆圈。为了减少依赖关系,我使类A通过BC进行通信,即C具有将A消息传递给B的方法。这种方法的问题在于它将B的接口公开给A,我不想发生这种情况。我的问题是,解决这个问题的最佳方法是什么。

为了提供更多背景信息,我正在研究语音识别系统。我从2个类开始,一个类获取识别结果(A),另一类处理结果。后来我不得不将处理结果的类分为两个,一个类进行一些预处理(B),例如检查结果是否良好,另一个类处理结果(C

最佳答案

控制反转。

class Controller {
    A a;
    B b;
    C c;

    private void injectControll() {
        a.registerListener(b); // a.passTo(b);
        b.registerListener(c);
        c.registerListener(a);
    }

09-26 00:08