Java 在RMI上实现观察器模式

Java 在RMI上实现观察器模式,java,rmi,observer-pattern,Java,Rmi,Observer Pattern,我正在尝试建立一个RMI聊天服务器,它具有多个聊天室。然而,作为RMI的新手,我不确定如何正确地实现观察者模式,或者我的前提是否真的有意义 我有一个ChatServer对象和一个ChatUser(客户端)对象。ChatServer包含ChatRoom对象的列表 每个聊天室都扩展了UnicastRemoteObject。但是,我希望在这里实现观测者模式,并且让聊天室也扩展Observable,这当然不能用Java实现 其想法是使用observer模式,当聊天室收到新消息时,让所有客户端接收更新 我

我正在尝试建立一个RMI聊天服务器,它具有多个聊天室。然而,作为RMI的新手,我不确定如何正确地实现观察者模式,或者我的前提是否真的有意义

我有一个
ChatServer
对象和一个
ChatUser
(客户端)对象。
ChatServer
包含
ChatRoom
对象的列表

每个
聊天室
都扩展了
UnicastRemoteObject
。但是,我希望在这里实现观测者模式,并且让聊天室
也扩展
Observable
,这当然不能用Java实现

其想法是使用observer模式,当聊天室收到新消息时,让所有客户端接收更新

我想知道在这种情况下是否有一种方法可以实现某种观察者模式?我已经对谷歌进行了初步检查,但我遇到的大多数解决方案往往非常复杂,或者有点过头了

否则,我在这里做事情的方式是否存在根本性的问题(根据我给出的非常简短的想法)


提前感谢;)

是的,您只需在
聊天室
界面中声明一个
注册(ChatClient)
方法即可。
ChatClient
需要扩展
Remote
并作为远程对象导出,就像您的
ChatServer
ChatRoom
界面一样。
ChatClient
会声明一些回调方法来接收来自聊天室的消息。

我已经有一段时间没有执行RMI了,但是如果您改为手动导出对象,则不需要扩展
UnicastRemoteObject
。我将尝试从一个较旧的项目中生成一个代码示例,但看看Oracle文档中有关导出远程对象的内容。使用RMI有什么特别的原因吗?聊天室不需要是可观察的,比如说,但可以包含一个观察者,客户机将根据它进行注册。您也可以考虑搜索RMI回调。