使用Java将名称空间中的数据从服务发送到客户端

时间:2019-03-06 05:44:46

标签: java service namespaces client

考虑一下,我有一堆扩展相同接口的数据处理器:

IProcessor.java

public interface IProcessor() {
  void processName(String name);
}

BookProcessor.java

public class BookProcessor implements IProcessor {
  @Override
  public void processName(String name){
    //Process name in book specific logic
  }
}

MagazineProcessor.java

public class MagazineProcessor implements IProcessor {
  @Override
  public void processName(String name){
    //Process name in magazine specific logic
  }
}

所有这些处理器都驻留在客户端(例如MyClient)中,并且该客户端从服务(例如MyService)接收数据。

我想实现命名空间,以便MyClient可以从该命名空间中自动选择正确的处理器。为此,我认为MyService本身应该发送命名空间的数据(可能是命名空间的ID)。
我的问题是,即使MyService对{{1}中存在的处理器一无所知,我如何实现这种名称间隔,以便MyClientMyService都共享它}。

1 个答案:

答案 0 :(得分:0)

MyService将数据发送到MyClient时,它必须提供有关正在发送的数据类型的提示。这样MyClient可以为这类数据选择合适的处理器。

所以正确的方法是:

在客户端与服务器之间订立合同,其中规定了服务器可以发送的数据类型。然后,在客户端,您应该实现一个匹配器,该匹配器将数据类型与其处理器匹配。

这样MyService对客户端可以使用的数据处理器一无所知。它只知道发送的内容。