考虑一下,我有一堆扩展相同接口的数据处理器:
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}中存在的处理器一无所知,我如何实现这种名称间隔,以便MyClient
和MyService
都共享它}。
答案 0 :(得分:0)
当MyService
将数据发送到MyClient
时,它必须提供有关正在发送的数据类型的提示。这样MyClient
可以为这类数据选择合适的处理器。
所以正确的方法是:
在客户端与服务器之间订立合同,其中规定了服务器可以发送的数据类型。然后,在客户端,您应该实现一个匹配器,该匹配器将数据类型与其处理器匹配。
这样MyService
对客户端可以使用的数据处理器一无所知。它只知道发送的内容。