我正在Swing中编写简单的Peer-Server-Peer聊天应用程序。在客户端,有一个负责客户端 - 服务器通信的“客户端”对象和一个主要的jForm“MainWindow”。
收到消息后,“客户”需要通知'MainWindow'有关新消息的信息。但是,'MainWindow'是在程序开始时创建的对象(在我创建'Client'之后的情况下),所以我正在寻找一种方法将'MainWindow'引用传递给'Client'。
我正在考虑创建'Resource'类,其中包含我需要在我的应用程序中与之通信的对象的静态引用,但它看起来并不优雅。
有更好的方法吗?
答案 0 :(得分:0)
看看番石榴的EventBus。 您可以使用它在两个类之间进行通信,而不会相互引用。
答案 1 :(得分:0)
public interface MessageListener {
public void notify(Message msg);
}
public class MainWindow implements MessageListener {
public void notify(Message msg) {
// UI Action
}
}
public class Client {
private MessageListener listener;
public void setMessageListener(MessageListener listener) {
this.listener = listener;
}
}
您可以使用类似于发布订阅模式的内容MainWindow
订阅发布商Client
,并在客户收到消息时可以调用listener.notify
方法。因此,notify
中的MainWindow
方法将被调用。