有没有人见过/试图编写使用 Guice 风格配置系统的服务定位器模式?
目前我有一个 GWT 项目(恰好使用 GWT-RPC),它使用命令模式,其中我的 RPC servlet 看起来像这样......
public interface TransactionService extends RemoteService {
<T extends Response> T execute(Action<T> action);
}
在我当前执行方法的实现中,我这样做...
if(action instanceof SomeActionImpl){
doSomeActionImpl((SomeActionImpl)action);
}else if(action instanceof SomeActionImpl2){
doSomeActionImpl2((SomeActionImpl2)action);
}
我想做的是找出一种方法来摆脱巨大的 if 语句。我需要一些方法来注册 ActionImpl1 的类应该委托(delegate)给 TransactioNService 的另一个实现。
有什么想法吗?我正在考虑向 HashMap 添加条目,其中键是 Action 的类,值是 ServiceImpl 的类。一是我有一个 ServiceImpl 类的引用,我可以使用 Guice 来获取 TransactionService 的一个实例。
最佳答案
看看 gwt-dispatch ( http://code.google.com/p/gwt-dispatch/ ) 中的 net.customware.gwt.dispatch.server.DefaultActionHandlerRegistry 类;它完全符合您的建议。这是存储处理程序的成员变量:
私有(private)最终 map <类>, ActionHandler, ?>> 处理程序;
如果要在服务器端执行处理程序,请使用 gwt-dispatch 服务器端组件;如果它是客户端的东西,那么考虑在 DefaultActionHandlerRegistry 上为您的调度类建模。
关于java - Guice 风格的服务定位器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1429901/