PHP7でデザインパターン入門5/23 Singletonパターン

Singleton パターンとは

Singleton パターンを用いると、そのクラスのインスタンスが1つしか生成されないことを保証することができる。ロケールやLook&Feelなど、絶対にアプリケーション全体で統一しなければならない仕組みの実装に使用される。

Singleton パターン - Wikipedia

「このクラスのインスタスはたった1つしか作りたくない」というとき、システムの中に1個しか存在しないものをプログラムで表したい場合に使うことができる。

  • 指定したクラスのインスタンスが絶対に1個しか存在しないことを保証したい
  • インスタンスが1個しか存在しないことをプログラム上で表現したい

example

以下サンプルプログラム。

Singletonクラス

<?php
class Singleton
{
    private static $singleton;

    private function __construct()
    {
        echo("インスタンスを生成しました。" . PHP_EOL);
    }

    public static function getInstance(): Singleton
    {
        if (isset(self::$singleton) === false) {
            self::$singleton = new self;
        }
        return self::$singleton;
    }
}

main

<?php
$obj1 = Singleton::getInstance();
$obj2 = Singleton::getInstance();
echo $obj1 === $obj2
    ? "obj1とobj2は同じインスタンスです。"
    : "obj1とobj2は同じインスタンスではありません。";

実行結果

インスタンスを生成しました。
obj1とobj2は同じインスタンスです。

ソースコード

github.com

関連パターン

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門