ボンジュール・マドモアゼル

本サイトの情報は自己責任にてご利用下さい。

[未分類] ServiceLocator サブクラス化

 
より洗練された ServiceLocator を用意するために、ServiceLocator クラスをサブクラス化して、そのサブクラスをレジストリのクラス変数に渡すこともできる。
Inversion of Control コンテナと Dependency Injection パターン
この意味がわからない。

ServiceLocator.getInstance()で、ServiceLocatorのインスタンスが返ってくるのかと思いきや、
なぜか、サブクラスである、ExampleServiceのインスタンスが返ってきます。

この仕組みが本当にわからなかったのですが、
(何故、ServiceLocator.getInstance()でサブクラスのインスタンスが帰ってくるのか?)

原因は、ServiceLocatorのコンストラクタにありました。

「 instance = this; 」!
(instanceはprivate staticなServiceLocatorのプロパティです)

従って、
ApplicationMxml.mxmlで(アプリケーション起動時に)ExampleServiceをnewしている(と思う)ので、
ロジッククラス等でServiceLocator.getInstance()を行ったときには、
ServiceLocatorのinstanceプロパティにはExampleServiceのインスタンスを持っていると!

Singletonなクラスを単純に継承させるとSingletonのルールが破れるのですが、
それを逆手に取った手法でした。。。
良いのか悪いのかはわかりませんが、びっくりです。
fxug CairngormのServiceLocatorについての質問です

このことか?
class Singleton {
  private static Singleton instance = null;
  
  public static Singleton getInstance() {
    synchronized (Singleton.class) {
      String className = System.getProperty("Singleton", "Singleton");
      if (instance == null) {
        try {
          Class classObject = Class.forName(className);
          instance = (Singleton) classObject.newInstance();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
    return instance;
  }
  
  public Singleton() {
    if (instance != null) {
      throw new RuntimeException("More than one instance has created!");
    } else {
      instance = this;
    }
  }
    
  public void show() {
    System.out.println("Singleton");
  }
}

class SingletonExtended extends Singleton {
  public SingletonExtended() {
    super();
  }

  public void show() {
    System.out.println("SingletonExtended");
  }
}

Patterns I Hate #1: Singleton

[用語] レルム

 
まずは原義から
----------------------------------------------------------------------
■語源■
----------------------------------------------------------------------

 realm の辞書初出は1290年のこと。古フランス語 reaume が語源です。これ

は恐らく、kingdom を意味するroiaume から派生した語と言われています。こ

の単語はラテン語 regimen ( system of government, rule )の対格regiminem

が変化したものです。

----------------------------------------------------------------------
■用法・語法・例文■
----------------------------------------------------------------------

 発音に気をつけましょう。「レルム」と発音します。


・ Human beings are the top of the realm of nature.

「人類は自然界の頂点に立つ。」

[...]

・Natural disasters are outside of the realm of human control.

「自然災害は人間がコントロールできるものではない。」


・I'm afraid the problem is out of my realm of expertise.

「その問題は私の専門外でして・・・。」

[...]

・His remarks went beyond unpleasantness and into the realm of jesting.

「彼の発言は不愉快を通り越して滑稽だった。」
語呂でサクサクらくらく暗記!難解英単語暗記道
でセキュリティの方は、と
「セキュリティーポリシードメイン」または「セキュリティードメイン」とも呼ばれている「レルム」とは、サーバーによって共通のセキュリティーポリシーが定義および適用される範囲のことです。実際には、レルムとはサーバーがユーザーおよびグループの情報を格納するリポジトリです。
ユーザー、グループ、ロール、およびレルムについて
Sun Java System Application Server Enterprise Edition 8.2 管理ガイド




もう、いっちょ。
レルムとは,同一の認証ポリシーを適用する範囲のことです。(中略)
同じユーザ管理要件を持つ複数のアプリケーションは,一つのレルムで運用できます。新たにすべてのサービスを構築する場合,すべてのサービスを一つのレルムにして,認証されたユーザの持つセキュリティ属性によって各種のサービスに対してコントロールするようにできれば管理しやすいのですが,現実にはなかなかそのようなシステムの構築はされません。社内メールではメールのID,人事システムでは従業員番号,資材システムには部署コードでログインするといったように,企業システムにはすでに多くのレルムがあり,これらは別々に管理運用されています。
12.1.2 レルムを使用したユーザ管理とユーザマッピング
Cosminexus 機能解説