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です。

Why do not you register as a user and use Qiita more conveniently?
  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
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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