Java 处理来自RMI服务器的对象并将其委托给客户端中的对象

Java 处理来自RMI服务器的对象并将其委托给客户端中的对象,java,rmi,Java,Rmi,我正在使用RMI创建一个即时聊天应用程序。服务器通过我需要客户端处理的某些对象发送数据。 例如,服务器将发送一个JoinedGroupOperation类。在我的客户端应用程序中,我需要识别该类并让我的处理程序接管(HandleJoinedGroupOperation)。这个类将在客户端完成大量工作 我的问题是如何处理来自服务器的类,这样就不需要执行任何if语句?即 if(server.getResponse() instanceof JoinedGroupOperation){ Han

我正在使用RMI创建一个即时聊天应用程序。服务器通过我需要客户端处理的某些对象发送数据。 例如,服务器将发送一个
JoinedGroupOperation
类。在我的客户端应用程序中,我需要识别该类并让我的处理程序接管(
HandleJoinedGroupOperation
)。这个类将在客户端完成大量工作

我的问题是如何处理来自服务器的类,这样就不需要执行任何if语句?即

if(server.getResponse() instanceof JoinedGroupOperation){
    HandleJoinedGroupOperation handle = new HandleJoinedGroupOperation();
    handle.foo();
}

在您的案例中,一个可能的选择是使用设计模式。 您应该为可能的处理程序创建一些抽象(如
HandleJoinedGroupOperation
),然后链接这些处理程序(最好在开始时)。例如,创建一个接口

 interface OperationHandler {
     void handle(Operation op);
}
其中,
操作
也是所有可能操作的基本类型。此类型(
操作
)可以包含枚举类型OperationType的字段:

enum OperationType {
...
}
然后在具体的处理程序中,您只需检查此字段(尽管它将包含
if
语句,但这些语句将封装在每个特定的处理程序中)

作为一个简单的示例,这里是处理程序的默认实现

class SimpleHandler implements OperationHandler {
 private OperationHandler next;

 public void handle(Operation op) {
     if (op.getType() == OperationType.SOMEYOURTYPE) {
        //do some stuff
     } else {
        next.handle(op);
     }
 }
}
在这种情况下,您的
server.getResponse()
方法只会返回
操作的基本类型

同时阅读文章以获得更多信息