我有两个班级 - A班和B班。
A类从上层接收消息,我想将此消息转发给B类进行处理。当B处理此消息时,它将更新其自己的状态并生成一些事件。 A类中有一个方法可以将这些事件发送到上层。
我无法在A类中更改sendEventToUpperLayer()。那么如何将B类中生成的事件及其状态返回给A类?我应该简单地丢弃B类,并将B类的逻辑移到A类中吗?
public class A {
private B b;
private void processMessage(Message) {
b.processMessage(Message);
}
private void sendEventToUpperLayer() {
}
}
public class B {
public void processMessage(Message) {
// It will generate a few events and update b's state.
// All these events and b's state will need to use class A's method of sendEventToUpperLayer() to forward to upper layer.
}
}
答案 0 :(得分:0)
让class A
实现一个用于发送消息的接口,一个声明sendEventToUpperLayer或更通用命名的版本(您的实现然后委托给现有的sendEventToUpperLayer方法)。
然后将class A
传递给class B
的{{1}}方法作为参数,B类接受该参数作为命名接口(不直接作为A类)。
如果合适,您还可以将类A(通过前面提到的接口)传递给B类构造函数中的B类,如果B类实例将始终引用其回调的同一个A类实例