シングルトン パターンは、クラスのインスタンス化を単一のインスタンスに制限する設計パターンです。これは、システム全体のアクションを調整するために 1 つのオブジェクトだけが必要な場合に特に便利です。
シングルトン パターンの主な特徴
このシナリオを想像してください
シングルトン パターンをよりよく理解するために、1 人だけが所有できる特別なおもちゃを持つというような、より単純な言葉で考えてみましょう。仕組みは次のとおりです:
1 つのおもちゃ: とても特別な魔法の杖を想像してみてください。この魔法の杖を一度に持てるのは 1 人の子供だけです。他の人が使いたい場合は、その子に頼まなければなりません。
安全に保管する: この子は魔法の杖を安全な場所 (おもちゃ箱など) に保管し、他の人が勝手につかんで持ち去ってしまうことがないようにしています。
おもちゃを求める: 友達が魔法の杖で遊びたいときは、特別な子供に頼まなければなりません。お子様は共有しますが、いつ、どのように共有するかを決定できるのはお子様だけです。
これがシングルトン パターンとどのように関連するか
1 つのインスタンス: 魔法の杖が 1 つだけあるのと同じように、シングルトン パターンでは、クラスのインスタンス (またはコピー) が 1 つだけあります。このクラスは、オブジェクト (おもちゃなど) を作成するための青写真と考えることができます。
プライベート アクセス: おもちゃ箱 (またはコンストラクター) は他の人には閉鎖されています。これは、誰も新しい魔法の杖を作成できないことを意味します。彼らは存在する 1 つの杖を使用する必要があります。
おもちゃの入手: 魔法の杖 (またはクラス) を使用したいときは、特別なドア (getInstance() と呼ばれるメソッド) を通過する必要があります。このドアは、魔法の杖がすでにそこにあるかどうかを確認します。そうでない場合は、それを作成して彼らに渡します。
PHP での例
PHP でのシングルトン パターンの簡単な実装を次に示します。
class MagicWand { private static $instance = null; // This is our one and only wand // This keeps anyone from making a new wand private function __construct() { } // This is the door to get the wand public static function getInstance() { if (self::$instance === null) { self::$instance = new MagicWand(); // Making the wand if it doesn't exist } return self::$instance; // Giving back the wand } public function castSpell() { echo "Casting a spell!"; } } // Using the magic wand $wand = MagicWand::getInstance(); $wand->castSpell(); // Now we can cast spells with the one and only wand!
このたとえでは:
魔法の杖を持てるのは子供が 1 人だけであるのと同じように、プログラミングではシングルトン パターンを利用して、クラスのインスタンスが 1 つだけ存在するようにし、全員が使用したいときにそのインスタンスを要求する必要があります。
このパターンは、リソースを効率的に管理し、アプリケーション全体で一貫した状態を維持するのに役立ち、ソフトウェア設計において不可欠な概念となります。
リファクタリングの達人 - シングルトン パターン
以上がPHP の例を使用したシングルトン パターンの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。