Help us understand the problem. What is going on with this article?

デザインパターン×PHP - Singleton

More than 5 years have passed since last update.

はじめに

増補改訂版Java言語で学ぶデザインパターン入門を利用して、デザインパターンを学習していこうと思います。
その備忘録として、徒然にQiitaに投稿していきます。

Singletonパターンの構成要素

役名 概要
Singleton 唯一のインスタンスを返すstaticメソッドを持つクラス。
このコンストラクタは、他のところからnewされないためにprivateとなっている。
また、この自分自身のインスタンスを保持するためのstatic変数を所持している。

Singletonパターンのクラス図

Factory Methodパターンのクラス図

Singletonパターンの使いどころ

  • インスタンスが絶対に1つしか生成されないことを保証したい時
  • システム内に1つだけあればよいという時
    ー Ex.設定ファイル

Singletonパターンのデメリット

LaravelのIoCクラスでSingletonを使う

Laravelで用いられるIoC(Inversion of Control)とは、DI(Dependency Injection)のこと。
この点に関しては、こちらの記事がわかりやすいです。

IoCへの登録は、

IoC::register('hoge', function() {
    return new Hoge;
}

こんな感じで、register()というメソッドを使います。

ここで、生成するインスタンスを1つに限定したいという要求があった場合は、簡単にSingletonパターンを適応できちゃいます。

IoC::singleton('fuga' function () {
    return new Fuga;
});

このように、register()メソッドのかわりに、singleton()メソッドで実装すればOKです。

massa142
Programming / Perfume / Lacrosse
http://massa142.github.io/
squeeze-inc
「価値の詰まった社会を創る」をビジョンに掲げ、民泊・宿泊チャネルの全物件情報・予約情報・顧客情報を一元管理できる『suitebook』を運営しています。
https://squeeze-inc.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away