【发布时间】:2015-11-27 20:29:05
【问题描述】:
假设我有 A 类和 B 类以及一个名为 Message 的接口
public interface Message{
public void sendMessage();
}
public class A implements Message{
@Override
public void sendMessage(){
//call the sendMessage() in class B.
}
}
public class B implements Message{
@Override
public void sendMessage(){
System.out.println("Hola Stack!");
}
}
如果没有对 B 类的直接引用,我能以某种方式从 A 类调用 B 类中的 sendMessage() 方法吗?
【问题讨论】:
-
首先,您需要在 ClassA 中定义一个变量,以便引用
ClassB对象。不要将变量类型化为ClassB,而是将ot 类型化为Message,然后使用ClassB的实例对其进行初始化,可能通过DI 来确保A 不知道B -
这类问题可以使用event bus来解决。这样发送者不需要知道(或关心)谁在接收消息,但仍然可以在接收类中触发动作(例如 B 监听 A,当它看到消息时,它会调用自己的
sendMessage()方法) .
标签: java oop design-patterns interface