Java 在RMI上实现观察器模式
我正在尝试建立一个RMI聊天服务器,它具有多个聊天室。然而,作为RMI的新手,我不确定如何正确地实现观察者模式,或者我的前提是否真的有意义 我有一个Java 在RMI上实现观察器模式,java,rmi,observer-pattern,Java,Rmi,Observer Pattern,我正在尝试建立一个RMI聊天服务器,它具有多个聊天室。然而,作为RMI的新手,我不确定如何正确地实现观察者模式,或者我的前提是否真的有意义 我有一个ChatServer对象和一个ChatUser(客户端)对象。ChatServer包含ChatRoom对象的列表 每个聊天室都扩展了UnicastRemoteObject。但是,我希望在这里实现观测者模式,并且让聊天室也扩展Observable,这当然不能用Java实现 其想法是使用observer模式,当聊天室收到新消息时,让所有客户端接收更新 我
ChatServer
对象和一个ChatUser
(客户端)对象。ChatServer
包含ChatRoom
对象的列表
每个聊天室
都扩展了UnicastRemoteObject
。但是,我希望在这里实现观测者模式,并且让聊天室也扩展Observable
,这当然不能用Java实现
其想法是使用observer模式,当聊天室收到新消息时,让所有客户端接收更新
我想知道在这种情况下是否有一种方法可以实现某种观察者模式?我已经对谷歌进行了初步检查,但我遇到的大多数解决方案往往非常复杂,或者有点过头了
否则,我在这里做事情的方式是否存在根本性的问题(根据我给出的非常简短的想法)
提前感谢;) 是的,您只需在聊天室
界面中声明一个注册(ChatClient)
方法即可。ChatClient
需要扩展Remote
并作为远程对象导出,就像您的ChatServer
和ChatRoom
界面一样。ChatClient
会声明一些回调方法来接收来自聊天室的消息。我已经有一段时间没有执行RMI了,但是如果您改为手动导出对象,则不需要扩展UnicastRemoteObject
。我将尝试从一个较旧的项目中生成一个代码示例,但看看Oracle文档中有关导出远程对象的内容。使用RMI有什么特别的原因吗?聊天室不需要是可观察的,比如说,但可以包含一个观察者,客户机将根据它进行注册。您也可以考虑搜索RMI回调。