0

我必须想出一个服务查找的设计,即决定服务请求是可以在本地处理还是应该发送到远程服务器(使用 SOAP Web 服务调用)。我首先想到的是服务定位器。

是否有其他符合要求的设计模式?任何指针或示例代码会有帮助吗?

4

2 回答 2

0

您可以使用依赖注入。如果客户端不知道服务的位置(无论是本地还是远程),它们应该依赖于抽象:

public interface MyService {
   void doSomething();
}

public class MyClientThatUsesMyService {

  private MyService _service;
  public MyClientThatUsesMyService(MyService service) {
     _service = service;
  }

  public void Go() { _service.doSomething(); }

}

然后您可以使用依赖注入容器或(Poor Man's DI)来配置您的组合根并设置对象的生命周期。

于 2012-06-28T08:12:49.607 回答
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();
于 2012-06-28T04:28:54.730 回答