在RMI上实现观察者模式

3
我正在尝试组建一个RMI聊天服务器,具有多个房间的功能。然而,由于我是新手,不确定如何正确实现观察者模式,或者我的前提是否合理。
我有一个ChatServer对象和一个ChatUser(客户端)对象。 ChatServer包含一个ChatRoom对象列表。
每个ChatRoom都扩展了UnicastRemoteObject。但是,我希望在这里实现观察者模式,并使ChatRoom也扩展Observable,当然Java无法做到这一点。
这个想法是使用观察者模式,让所有客户端在ChatRoom接收新消息时接收更新。
我想知道在这种情况下是否有一种实际实现某种观察者模式的方法? 我已经初步在Google上检查过,但我遇到的大多数解决方案往往非常复杂或有点太过头了。
否则,从我给出的非常简短的想法来看,我做事情的方式是否存在根本问题?
提前致谢;)

2
我已经有一段时间没有做RMI了,但是如果您手动导出对象,就不需要扩展UnicastRemoteObject。我会尝试从旧项目中生成代码示例,但请查看Oracle文档以了解如何导出远程对象。 - Thorn G
1
有使用RMI的特别原因吗? - dimoniy
1
ChatRoom不一定需要成为Observable,但可以包含一个Observer,客户端实际上会注册该Observer。您还可以考虑搜索RMI回调。 - MadProgrammer
1个回答

1

是的,您可以在ChatRoom接口中简单地声明一个register(ChatClient)方法。 ChatClient需要扩展Remote并作为远程对象导出,就像您的ChatServerChatRoom接口一样。 ChatClient将声明一些回调方法以从聊天室接收消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接