我有Java接口类。
public interface ModelClient {
}
public interface DownstreamService1Client extends ModelClient {
public ContentData getContentData();
}
public interface DownstreamService2Client extends ModelClient {
public ContentData getContentData();
}
public interface DownstreamService3Client extends ModelClient {
public ContentData getContentData();
}
我有另一种规范构建方法:
ModelClientSpec<DownstreamService1Client> spec = ModelClientSpec.builder(DownstreamService1Client.class);
以上规范可用于创建客户端:
DownstreamService1Client client = context.getResourceClient(spec);
可用于调用下游客户端获取数据:
ContentData data = client.getContentData(); // get the data from downstream service.
我创建了以下客户端规范静态映射:"contentType"->下游客户端规范
"music" -> DownstreamClient1Spec
"books" -> DownstreamClient2Spec
...
现在我有了一个处理方法:
public ContentData handle(String contentType) {
// need to get a client based on contentType
client = ???
return client.getContentData()
}
除了具有contentType的switch语句和特定的客户端创建逻辑之外,我如何基于contentType获得客户端?使用Guice动态绑定特定客户端是一种干净的方法吗?
谢谢!
我想,可以使用多绑定,特别是MapBinder
来实现您想要的功能。将您的客户端绑定到映射,注入它,然后通过键从该映射中获取特定的实现。