Java シングルトンのサンプル

Javaのシングルトンのサンプルです。

目次

シングルトン

  • あるクラスのインスタンスを1つしか作成しないデザインパターンのことです。
  • コンストラクタのアクセス修飾子をprivateにして外部からnewできないようにします。
  • クラスがロードされた初回に一度だけインスタンスが生成されます。
  • 生成したインスタンスは、アクセス修飾子がprivateのstatic変数に保存します。
  • インスタンスの取得はstaticメソッドから行います。
  • Java staticメソッドとstatic変数のサンプル
  • Java クラスのサンプル

コード

シングルトンのサンプルです。

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 インターフェースのサンプル
Java 抽象メソッドと抽象クラスのサンプル(abstract)
Java ポリモフィズムのサンプル
Java staticメソッドとstatic変数のサンプル

△上に戻る