DI 以外のシステムをプログラミングするときに私が覚えていた比喩は、「おもちゃで遊んでいる人」です。人はオブジェクトであり、人のおもちゃはオブジェクトが作成、保存、初期化、および操作するものです。おもちゃは、特定の状態に達するとイベントを送信できますが、使用者については何も知りません。それらは、インターフェイスを構成するコントロール スイッチを備えた小さなブラック ボックスです。ユーザーは、おもちゃからのイベントをリッスンし、インターフェイスを操作して応答できます。人は自分のおもちゃでやりたいことを何でもできますが、壊れる可能性があるため、内部に干渉するべきではないでしょう。
DI が私の比喩にもたらした大混乱は、玩具が、その所有者、つまり使用者を知っている意識のある存在に変わってしまうことです。おもちゃはこの人を操作することができますが、その人はおもちゃがどのように機能するかを何も知らず、気にもかけません。その人はおもちゃを所有しているだけで、おもちゃが自分を満足させるように操作してくれることを期待しています。
なに?それは恐ろしいですね!
DIシステムがどのように機能するかを考えるために、彼らが使用している優れた精神的な比喩は何ですか?