Javaのシングルトン(Singleton)のサンプルです。
目次
シングルトン | シングルトンとは |
シングルトンのサンプル |
シングルトン(Singleton)とは
- あるクラスのインスタンスを1つしか作成しないデザインパターンのことです。
- 再度インスタンスを呼ぶメソッドを実行した場合、1つめのインスタンスが返ります。
- コンストラクタのアクセス修飾子をprivateにして外部からnewできないようにします。
- クラスがロードされた初回に一度だけインスタンスが生成されます。
- 生成したインスタンスは、アクセス修飾子がprivateのstatic変数に保存します。
- インスタンスの取得はstaticメソッドから行います。
シングルトンのサンプル
シングルトンのサンプルです。
package test1;
class Class1 {
private static Class1 c1 = new Class1();
private Class1() {
}
public static Class1 getInstance() {
return c1;
}
}
public class Test1 {
public static void main(String[] args) {
Class1 c1 = Class1.getInstance();
Class1 c2 = Class1.getInstance();
if (c1 == c2) {
System.out.println("同じ"); //同じ
}
}
// コンパイルエラー "コンストラクタClass1()は不可視です"
//Class1 c3 = new Class1();
}
5行目は、privateの変数です。外部から参照できません。
7行目は、コンストラクタです。privateになっているので外部からnewできません。
10~12行目は、5行目の変数の値を返すメソッドです。
18行目は、10行目のメソッドを呼び出します。その時に5行目でインスタンスが生成されてprivateの変数にセットされます。11行目は、5行目の変数の値のインスタンスが返ります。
19行目も、10行目のメソッドを呼び出しますが、18行目のメソッド実行時に生成されたインスタンスが返ります。
21行目は、インスタンス同士の比較をしています。同じなのでtrueになります。
26行目は、newでインスタンスの生成を行おうとしますが、7行目のコンストラクタがprivateのためコンパイルエラーになります。
関連の記事
Java入門 クラスの仕組みとサンプル
Java コンストラクタのサンプル
Java クラスの変数の用語のサンプルとまとめ(メンバー変数他)
Java インターフェースのサンプル(interface)
Java 抽象クラスと抽象メソッドのサンプル(abstract)
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル