私は存在の疑いがあります。私はServiceLocatorパターンの実装をC++でいくつかのブログで見た(Service Locator)。したがって、私はJava SE上で同じ実装を拡張しようとしています(それ以外のフレームワークはありません)。コードの下を参照してください。javaのServiceLocatorパターンのこの有効な実装ですか?
私の質問:それはjavaのServiceLocatorパターンの有効な実装ですか?そうでない場合は、Javaでこのパターンの最も単純な(実装の)実装は何でしょうか?
/**
* Where MyService1 and MyService2 are interfaces.
*/
public final class MyServiceLocator {
private static MyService1 service1;
private static MyService2 service2;
private MyServiceLocator() {
// No op
}
public static MyService1 getMyService1() {
if (service1 == null) {
throw new NullMyService1Exception();
}
return service1;
}
public static MyService2 getMyService2() {
if (service2 == null) {
throw new NullMyService2Exception();
}
return service2;
}
public static void provideService1(MyService1 service1) {
// Initialize Service1
...
MyServiceLocator.service1 = service1;
}
public static void provideService2(MyService2 service2) {
// Initialize Service2
...
MyServiceLocator .service2 = service2;
}
}
あなたは[java.util.ServiceLoaderクラス](http://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html)を知っていますか?学術的な理由からこれを実行しようとしている場合、サービスロケータのポイントは、特定のタイプのサービスを発見するための明確に定義されたアルゴリズムを持つか、または公共のサービスレジストリを持つことですそれ自身を登録する。あなたのコードはどちらもしないようです。 – VGR
存在の疑い?かなり深刻な音... – shmosel
こんにちは@shmoselは、私はそれについて多くの疑問を持っていると言う方法は、誰もそれのために死ぬだろう。ご注意いただきありがとうございます。 – Ariel