Singleton--Effective Java学習ノート
Singleton: 一度だけインスタンス化されたクラスを指します.
Effective Java Singletonを実現するには3つの方法があると指摘されています.
Jdk 1.5以前(2種類):
コンストラクタはプライベートであり、パブリック静的メンバーをエクスポートします.
1.パブリック静的メンバーはfinalドメイン
2.共有メンバーは静的工場方法である
Jdk1.5:
3.単一要素を含む列挙タイプ
以下に、Singletonを実装する上記3つのインスタンスコードフラグメントを示す.
1つ目:
2つ目:
3つ目:
単一要素の列挙タイプは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を実現するための最良の方法となっている.
その簡潔さ、無償でシーケンス化メカニズムを提供し、複数回のインスタンス化を絶対に防止するためである. (しかしまだ広く採用されておらず、現時点では究明されていない)