0

サービス ルックアップの設計を考える必要があります。つまり、サービス リクエストをローカルで処理できるか、リモート サーバーに (SOAP Web サービス呼び出しを使用して) 送信する必要があるかを決定する必要があります。最初に頭に浮かぶのは Service Locator です。

要件に適合する他の設計パターンはありますか? ポインタやサンプルコードは役に立ちますか?

4

2 に答える 2

0

Service locator + Factory はまさにあなたが必要としているものです。
私の謙虚な意見では、コードは次のようになります。

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 に答える
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 に答える