Singleton--Effective Java学習ノート


Singleton: 一度だけインスタンス化されたクラスを指します.
Effective Java Singletonを実現するには3つの方法があると指摘されています.
Jdk 1.5以前(2種類):
コンストラクタはプライベートであり、パブリック静的メンバーをエクスポートします.
1.パブリック静的メンバーはfinalドメイン
2.共有メンバーは静的工場方法である
Jdk1.5:
3.単一要素を含む列挙タイプ
 
以下に、Singletonを実装する上記3つのインスタンスコードフラグメントを示す.
 
1つ目:
public class Elvis {
      public static final Elvis INSTANCE = new Elvis();		//       final 
      //      
      private Elvis() {.....} 
    }

2つ目:
public class Elvis {
      public static final Elvis INSTANCE = new Elvis();
      //      
      public static Elvis getInstance() {
         return INSTANCE;
      }
    }

3つ目:
public enum Elvis {
      INSTANCE;
    }

単一要素の列挙タイプはSingletonを実現するための最良の方法となっている.
         その簡潔さ、無償でシーケンス化メカニズムを提供し、複数回のインスタンス化を絶対に防止するためである.   (しかしまだ広く採用されておらず、現時点では究明されていない)