【问题标题】:Implementing observer pattern over RMI在 RMI 上实现观察者模式
【发布时间】:2014-01-10 20:30:44
【问题描述】:

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

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

每个ChatRoom 都扩展UnicastRemoteObject。但是,我希望在这里实现观察者模式,并且让ChatRoom 也扩展Observable,这在Java 中当然是做不到的。

这个想法是使用观察者模式让所有客户端在ChatRoom 收到新消息时收到更新。

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

否则,我在这里做事的方式是否存在根本性错误(从我给出的非常简短的想法来看)?

提前致谢 ;)

【问题讨论】:

  • 我已经有一段时间没有完成 RMI,但如果您手动导出对象,则无需扩展 UnicastRemoteObject。我将尝试从旧项目中生成代码示例,但请查看有关导出远程对象的 Oracle 文档。
  • 使用 RMI 有什么特别的原因吗?
  • ChatRoom 不需要是可观察的,例如,但可以包含一个观察者,客户端实际上会注册。您也可以考虑搜索 RMI 回调

标签: java rmi observer-pattern


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 1970-01-01
    • 2015-02-12
    • 2013-10-28
    相关资源
    最近更新 更多