singletonの問題点と回避方法
メモ
http://homepage3.nifty.com/satoshis/oo/memo.html
ワタシがこれまでに Singleton パターンを使った部分を思い出して見ると、グローバル変数的にアクセスできるオブジェクトが欲しかったケースが大半です。グローバル変数的にアクセスしたいオブジェクトの大半は、データテーブルのように、システム内で一元的にデータを管理するためのオブジェクトでした。
なるほど。
「インスタンスが複数存在すると困る」ときにsingletonパターンを使う。
そういう使い方は知っていても「どこからでもアクセスしたいから」singletonパターンを使っている場合があった。
mapleのDIContainerFactoryはそういう役目か。
・・・ちょっと違うのかな?DIContainerFactoryはsingletonである必要がないよね。それに利用しているコードを見てみるとstatic呼び出ししているから、DIContainerFactory::getInstanceメソッドは不要だ。PHP4だとそういう実装しか出来なかったっけ・・?
FactoryからDIContainerのインスタンスを返却しているから利用側は両方に依存する。上のURLの例をそのまま使うと、利用側はFactoryクラス(この場合はFactoryというかWrapper)のみに依存すれば良いことになる。あまり違いは無いのかな。もう少し考えよう。