何らかの理由で、複数個のインスタンスを生成されては困るあるいは必要ない場合、インスタンスが一つ (Singleton) しか生成されないことを保証することができます。
sample.java
class Singleton {
private static Singleton singleton = new Singleton(); //クラス変数として唯一のインスタンスを保持
private Singleton() {} //newできなくする
public static Singleton getInstance() {return singleton;} //クラス変数に格納された唯一のインスタンスの参照を返す
public void greet() {System.out.println("hi");}
}
class Sample {
public static void main(String args[]) {
Singleton singleton = Singleton.getInstance();
singleton.greet();
System.out.println(singleton == Singleton.getInstance()); //参照先は同じ
}
}
実行例
$ javac sample.java && java Sample
hi
true