我有三个类,分别是A
,B
和C
。基本思想是,类A
将消息传递给B
并等待,基于该消息B
将消息传递给C
。最后,在C
处理该消息之后,它通知A
继续其功能。现在,这形成了一个圆圈。为了减少依赖关系,我使类A
通过B
与C
进行通信,即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);
}