我必须提出服务查找设计,即决定服务请求是可以在本地处理还是应该发送到远程服务器(使用SOAP Web服务调用)。我想到的第一件事就是Service Locator。
是否有其他符合要求的设计模式?任何指针或示例代码都会有帮助吗?
答案 0 :(得分:0)
服务定位器+工厂正是您所需要的。
在我看来,代码应该是这样的:
public enum ServiceOrigin {
REMOTE,LOCAL;
}
public class ServiceLocatorFactory {
MyService getService(ServiceOrigin origin) {
///Return a proper service instance
}
}
public interface MyService {
void doSomething();
}
ServiceLocatorFactory factory = //Get the factory somehow
MyService service = factory.getService(ServiceOrigin.REMOTE);
service.doSomething();
答案 1 :(得分:0)
您可以使用依赖注入。如果客户不知道服务所在的位置(无论是本地还是远程),它们应该取决于抽象:
public interface MyService {
void doSomething();
}
public class MyClientThatUsesMyService {
private MyService _service;
public MyClientThatUsesMyService(MyService service) {
_service = service;
}
public void Go() { _service.doSomething(); }
}
然后您可以使用依赖注入容器或(穷人的DI)来配置组合根并设置对象的生命周期。