我正在尝试组装一个rmi聊天服务器,它有多个房间。然而,作为rmi的新手,我不确定如何正确地实现观察者模式,或者我的前提是否有任何意义。
我有一个ChatServer
对象和一个ChatUser
(客户端)对象。ChatServer
包含ChatRoom
对象的列表。
每个ChatRoom
扩展UnicastRemoteObject
。但是,我希望在这里实现observer模式,并且让ChatRoom
也扩展Observable
,这当然是java无法做到的。
其思想是使用observer模式让所有客户机在ChatRoom
收到新消息时接收更新。
我想知道在这种情况下是否有办法实现某种观察者模式?我已经对google做了初步的检查,但是我遇到的大多数解决方案都很复杂,或者有点过头了。
否则,我在这里做事情的方式是否有根本性的错误(从我给出的非常简短的想法来看)?
提前感谢;)
最佳答案
是的,您可以在register(ChatClient)
接口中简单地声明ChatRoom
方法。ChatClient
将需要扩展Remote
并作为远程对象导出,就像您的ChatServer
和ChatRoom
接口一样。ChatClient
将声明一些回调方法来接收来自聊天室的消息。