ログ日記

作業ログと日記とメモ

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)のみに依存すれば良いことになる。あまり違いは無いのかな。もう少し考えよう。