システム内にインスタンスがひとつしか存在させなくする。
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,