パターンについて
ただ1つだけのオブジェクトが作成されていることを保証します。
HeadFirstデザインパターンでの定義
1つのクラスがただ1つのインスタンスを持つことを保証し
インスタンスにアクセスするグローバルポイントを提供する。
パターン構造

構成要素
uniqueInstance : getInstanceで生成されたインスタンスを保持しておく静的な変数。
Singleton(コンストラクタ) : スコープをprivateに定義し、getInstanceからのみ生成できるようにする。
getInstance : 唯一のインスタンスを取得できる静的メソッド。呼び出し時にインスタンスが存在しなれば生成する。
サンプル
Singletonクラスを生成する場合(マルチスレッドの場合は別途対策が必要)
・Singletonクラス(Singleton)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public class Singleton { private static Singleton uniqueInstance; private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } public String getDescription() { return "I'm a classic Singleton!"; } }
|
・実行コード
1 2 3 4 5 6
| public class Client { public static void main(String[] args) { Singleton singleton = Singleton.getInstance(); System.out.println(singleton.getDescription()); } }
|