PHPで学ぶデザインパターン - Singleton ~いくつ作るかを制限~

PHPで学ぶデザインパターン - Singleton ~いくつ作るかを制限~

Read in: en
PHPで学ぶデザインパターン - Singleton ~いくつ作るかを制限~

Singleton パターンとは?

インスタンス生成のコストを制御するために、インスタンスが1つしかないことを保証するパターンです。

構造

SingletonClass

priavateのコンストラクタとインスタンスを1つだけ返すstaticメソッドと自分自身のインスタンスを保持するためのstatic変数を用意するだけです。

メリット

インスタンスへのアクセスを制御できる

Singletonパターンが保持する自分自身へのアクセスをprivateに制限しているためクライアント側のコードからのアクセスを制御することができます。

インスタンス数を変更することができる

生成されるインスタンスの数を2つ以上に変更することも可能です。

デメリット

使いドコロ

実装例(※githubにリポジトリあります。)

<?php
class SingletonConfig {
    private $config;

    /**
     * a single variable
     */
    private static $instance;

    private function __construct()
    {
        $this->config = 'AUTO';
    }

    /**
     * Create a only instance
     */
    public static function getInstance()
    {
        if (!isset(self::$instance)) {
            self::$instance = new SingletonConfig();
        }

        return self::$instance;
    }

    public function getConfig()
    {
        return $this->config;
    }

    public final function __clone()
    {
        throw new RuntimeException('Clone is not allowed against' . get_class($this));
    }
}
<?php
require_once 'SingletonConfig.php';

$instanceA = SingletonConfig::getInstance();

$instanceB = SingletonConfig::getInstance();

if ($instanceA->getConfig() === $instanceB->getConfig()) {
    echo 'True';
} // true

まとめ

関連キーワード

Tags: デザインパターン PHP シングルトンパターン
Share: 𝕏 Post Facebook Hatena
✏️ View source / Discuss on GitHub
☕ サポート

このブログを応援していただける方は、以下からサポートをお願いします。いただいたサポートはブログ運営・技術研鑽に活用します。


関連記事