【发布时间】:2010-12-05 15:17:22
【问题描述】:
在编写非 DI 系统时一直困扰着我的一个比喻是“一个人在玩他/她的玩具”。人是对象,人的玩具是对象创建、存储、初始化和操作的任何东西。玩具可以在达到某种状态时调度事件,但对使用它们的人一无所知;它们只是带有构成其接口的控制开关的小黑匣子。该人可以监听来自玩具的事件并通过操纵它们的界面做出响应。这个人可以用他/她的玩具做任何他/她想做的事,但他/她可能不应该去干涉他们的内脏,因为它们可能会破裂。
DI 对我的比喻造成的破坏在于,它将玩具变成了有意识的存在,知道它们的主人,使用它们的人。玩具可以操纵这个人,但这个人对它们的工作原理一无所知,甚至不在乎。该人只是拥有玩具,并期望玩具操纵他/她以使玩具自己满意。
WTF??这听起来很可怕!
他们用来思考 DI 系统如何工作的一个好的心理隐喻是什么?
【问题讨论】:
标签: oop dependency-injection ooad