ホーム > Java > デザインパターン  Singletonパターン

Java -Singletonパターン-

Singleton パターン

Singleton パターン(シングルトン・パターン)とは、GoFよって定義されたデザインパターンの1つです。
Singleton パターンを用いると、そのクラスのインスタンスが1つしか生成されないことを保証することができます。

--サンプル1--
public class Singleton {

	private static Singleton instance=new Singleton();



	private Singleton(){}  ←このコンストラクタprivateにすると他のクラスかインスタンス化できません。



	public static Singleton getSingleton(){

		return instance;

	}

}

このクラスにおいてコンストラクタをprivateで定義すると他のクラスからインスタンス化できません。
このクラスのインスタンスを生成したいときはgetInstance()メソッドを利用します。
このメソッドは最初に呼び出された時だけインスタンスを生成し、2回目以降に呼び出される時は最初に生成されたインスタンスを返します。
その為このSingletonクラスは1つしか存在しないことが保証されます。

--サンプル2--
public class Singleton {

	private static Singleton instance=new Singleton();



	public Singleton(){}  ←このコンストラクタpublicに変更して確認テスト



	public static Singleton getSingleton(){

		return instance;

	}

}



------------------------------------------------------------------------



public class SingletonTest {

	public static void main(String[] args) {

		//Singletonクラスをテスト(static)

		Singleton instance1 =Singleton.getSingleton();

		Singleton instance2=Singleton.getSingleton();

		System.out.println(instance1==instance2);



		//Singletonクラスをテスト (new);

		Singleton instance3=new Singleton();

		Singleton instance4=new Singleton();

		System.out.println(instance3==instance4);

	}

}
実行結果
 tule
 false

(注)コンストラクタがprivateであるとnew でインスタンス化できないのでコンパイルエラーとなります。