Dyuichi Blog

オブジェクト指向シリーズⅣ: デザインパターン [⑤ Singleton]

概要

singletonは日本語で「一枚札」という意味になる.Singletonパターンは,クラスのインスタンスが一つしか生成されないことを保証するパターンである.

たとえば現在時刻や数学関数セットなど,普遍的に世界に一つしかないものを実装するときに使う.

Singletonパターンの要素は以下一つである.

  • Singleton:クライアントがアクセスしてインスタンスを生成したいクラス(外部からインスタンス生成はできない).

クラス図

画像が読み込まれない場合はページを更新してみてください。

実装例(Java)

java// Singleton
class Singleton {
    private static Singleton uniqueInstance;
    private Singleton() {}
    public static synchronized Singleton getInstance() {
        if (uniqueInstance == null) {
            uniqueInstance = new Singleton();
        }
        return uniqueInstance;
    }

    // その他メソッド
    public void print() {
        System.out.println("Hello World");
    }
}

// Client
public class SingletonPattern {
    public static void main(String[] args) {
        Singleton instance = Singleton.getInstance();
        instance.print();
    }
}

まとめ,所感

Singletonパターンで生成された1つのインスタンスを使いまわすことになるので,実質的にグローバル変数と変わらないことになる.つまり危険.