我正在尝试组建一个具有多个房间的RMI聊天服务器。但是,作为RMI的新手,我不确定如何正确实现观察者模式,或者我的前提是否真的有意义。
我有一个ChatServer
对象和一个ChatUser
(客户端)对象。 ChatServer
包含ChatRoom
个对象的列表。
每个ChatRoom
扩展UnicastRemoteObject
。但是,我希望在这里实现观察者模式,并ChatRoom
也扩展Observable
,这当然不能用Java完成。
我们的想法是使用观察者模式让所有客户端在ChatRoom
收到新邮件时收到更新。
我想知道在这种情况下是否有实际实现某种观察者模式的方法?我已对Google进行了初步检查,但我遇到的大多数解决方案往往非常复杂,或者有点太过分了。
否则,我在这里做事的方式是否存在根本性的错误(来自我给出的非常简短的想法)?
提前致谢;)
答案 0 :(得分:1)
是的,您只需在register(ChatClient)
界面中声明ChatRoom
方法即可。 ChatClient
需要扩展Remote
并作为远程对象导出,就像您的ChatServer
和ChatRoom
接口一样。 ChatClient
会声明一些回调方法,以便从聊天室接收消息。