1

我有这种情况:

具有以抽象类作为参数的方法的第三方库:

在服务器端,我可以调用这个第三方方法

    public void save(){
    ThirdParty.doSomethingBackground(new Callback() {
    public void done(Exception e) {
    //SOMETHING TO DO
    }
    });
    }

我可以在客户端调用此方法,执行以下操作:

ServerSide.save() 并传递了我的 CallBack 实现,但我不想从我的客户端看到第三方库,我需要在更改第三方库时对这种情况透明地执行此操作。

这样做的最佳做法是什么?

Tks

4

1 回答 1

1

创建一个自定义中间对象,其中包含创建自定义回调实现所需的所有信息。它类似于一个简单的 DTO。如果您使用某种远程处理,那么该对象将是可序列化的。

将此中间对象从客户端传递到服务器。在服务器上,在调用第三方之前将中间对象转换为您的回调实现。

从您的问题中不清楚您的第三方库调用是否是异步的。如果您希望 ServerSide.save 调用是同步的,而 ThirdParty 库调用是异步的,那么您需要阻塞服务器线程并在返回之前等待 ThirdParty 结果。一种方法是使用 Java 6/7 的FutureTask类。

如果您不希望 ServerSide.save 调用是同步的,那么您需要让客户端轮询服务器以在另一个服务器调用中寻找结果,或者设计双向通信。不过,双向通信通常要复杂得多,并且严重依赖于您使用的任何平台/协议/技术。

于 2013-06-19T13:23:44.120 回答