在对非 DI 系统进行编程时,我经常想到的一个比喻是“一个人在玩他/她的玩具”。人是一个对象,人的玩具是对象创建、存储、初始化和操作的任何东西。当玩具达到某种状态时,它们可以发出事件,但它们对使用它们的人一无所知;它们只是带有控制开关的小黑匣子,构成了它们的接口。人们可以监听玩具发出的事件并通过操纵其界面做出响应。这个人可以用他/她的玩具做任何他/她想做的事,但他/她可能不应该去干涉他们的内部,因为它们可能会破裂。

DI 对我的比喻造成的严重破坏是,它将玩具变成了有意识的生物,知道它们的主人,即使用它们的人。玩具可以操纵这个人,但这个人对它们的工作原理一无所知,甚至不关心。这个人只是拥有玩具并期望玩具能够操纵他/她以使玩具自己满意。

搞什么??听起来很可怕!
他们用来思考 DI 系统如何工作的一个好的心理比喻是什么?

有帮助吗?

解决方案

固体 励志图片 是一个很好的来源。

metaphor of the dependency injection principle

其他提示

想想一个绅士,他的管家。管家(对DI框架)提供了绅士的任何服务(外部依赖),他需要在需要时(有的像早晨的咖啡,在“初始化” :-));君子(类)只是消费的服务和不关心它们来自哪里,只要他们符合他的要求(实现某些接口)。

或者,如果你想使之更贴近您的比喻,你的类是孩子的DI框架是妈妈,和玩具与其他组件。这孩子不关心其中的玩具来自何方,只要她能发挥她想与他们的方式。

我的观点是相对于你的比喻DI和非DI之间的差异是与非DI系统,每个人做自己的玩具 - 他们必须知道如何让他们,他们只能用他们的玩具使。随着DI的人使用他们提供的玩具。他们不知道如何让他们,但他们知道玩具的行为,他们可以给他们只要任何玩玩具。

积木。

想乐高积木块作为暴露(顶部小凸块)一个或多个接口,并且具有一个或多个设置器或构造器参数(在底部的孔)。

的软件组件的

当你购买乐高玩具的盒子,该块不来预装配(硬连线)。他们是独立的组件。然后,通过连接接口(凸起),以制定者/构造(孔)组装它们(它们连接)。每块一无所知直接与其他块。除块以外的东西,需要组装它们 - (或主()或弹簧配置文件等)。这是你

我知道...这打破了一点,因为积木很大程度上有一个统一的接口 - 但它为我工作: - )

我使用的计算机系统。你有一个系统块,而你(一个DI)连接到该显示器,键盘和鼠标。该系统块只知道监视器是DVI设备,但不关心其准确监测它。它知道如何使用USB鼠标,但不知道也不关心天气是光盘或球滚动鼠标。

您 - 的DI框架结果。 系统结构 - 是提供服务的系统结果。 显示器/鼠标/键盘 - 通过DI(你)系统模块提供的服务。

的玩具,是不自觉的。他们只是让串的人领带位钩子,当某些事情发生时,钩转动,并且字符串被拉到,所以人都知道发生了什么事情。

这是我被告知是有关它是一个CD播放器的一个比喻DI。玩家并不关心你把光盘;然而,每次注入的CD播放器提供基于什么玩家从它需要不同的功能。

这是所有关于武士和武器。请检查出ninject: http://ninject.org/ 。转到“访问道场”字符一个有趣的比喻。不知道这是你的意思,但它的创意不过。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top