通常、システムとして本質的に1つか存在し得ない事象を表すための使用する。
シングルトンを実装するには2つの方法がある。
1.コンストラクタをprivateとし、そのクラスのインスタンスへのアクセスは、public static finalなメンバーを提供する。
public class Mackagy {
public static final Mackagy INSTANCE = new Mackagy();
private Mackagy() {
.....
}
}
privateなコンストラクタのみを提供することで、Mackagyのインスタンスは常に1つしか存在しないことを保証する。
2.コンストラクタをprivateとし、publicなstaticファクトリーメソッドを提供する。
public class Mackagy {
private static final Mackagy INSTANCE = new Mackagy();
privte Mackagy () {
....
}
public static Mackagy getInstance() {
return INSTANCE;
}
}
1つめの方法の長所は、クラスを構成しているメンバーの宣言から、そのクラスがシングルトンであることが明確であること。(public staticなフィールドがfinalなので、そのフィールドは常に同一のオブジェクト参照を保持する)
2つめの方法の長所は、APIを変更することなく、そのクラスがシングルトンであるべきかどうかを変更できる柔軟性があること。
したがって、そのクラスが永久にシングルトンであることを確信できるのであれば方法1、確信がないのであれば方法2を使用するべき。
→ おわり