Singleton


システム内にインスタンスがひとつしか存在させなくする。


SingletonClass.java (シングルトンのクラス)

package harada;

import java.util.*;

/*
 * 	Singltonのクラス
 */
public class SingletonClass {
	
	//自分自身を保持する変数
	private static SingletonClass myClass = new SingletonClass();

	//コンストラクタ  ※privateで定義して外部から呼び出されないようにする
	private SingletonClass() {}
	
	//インスタンスを取得するメソッド   ※public staticにすること!!
	public static SingletonClass getInstance(){
		return myClass;
	}
	
	
	
	private String Val = "";
	
	//プロパティ
	public String getVal(){
		return Val;
	}	
	public void setVal(String param){
		Val = param;
	}	
}

SingletonNotClass.java (シングルトンじゃないクラス)

package harada;

import java.util.*;

/*
 * 	Singltonじゃないクラス
 */
public class SingletonNotClass {

	private String Val = "";
	
	//プロパティ
	public String getVal(){
		return Val;
	}	
	public void setVal(String param){
		Val = param;
	}	
}

SingletonLab.java (結果の検証用クラス)

package harada;

import java.util.*;

/*
 * 	Singltonの呼出テスト用クラス
 */
public class SingletonLab {

	public static void main(String[] args) {
		
		// ふつうにインスタンスをつくる
		SingletonNotClass nrClass1 = new SingletonNotClass();
		SingletonNotClass nrClass2 = new SingletonNotClass();
		
		//Singletonクラスを取得
		SingletonClass snClass1 = SingletonClass.getInstance();
		SingletonClass snClass2 = SingletonClass.getInstance();
	
		//ふつうのテスト
		nrClass1.setVal("harada");
		System.out.print("Instance→" + nrClass2.getVal() + ",");
		
		// シングルトンのテスト
		snClass1.setVal("go");
		System.out.print("Singleton→" + snClass2.getVal() + ",");	
		
	}
}


SingletonLabの実行結果

Instance→,Singleton→go,