【发布时间】:2011-07-23 01:56:27
【问题描述】:
我是依赖注入的新手。我从来没有使用过,也从来没有完全理解过它到底是什么,但是在我最后一次攻击这个话题之后,我发现这是一种解耦对象及其依赖项的方法,一旦它们不负责实例化它的具体版本不再依赖,因为现在容器会为我们做这件事,并将准备好的对象交付到我们手中。
现在重点是; “我什么时候应该使用它?”,总是???实际上,由于我是新手,甚至从未见过使用这种模式的项目,我无法理解我应该如何将它应用到我的域对象!在我看来,我将永远不会实例化我的对象,并且容器将始终为我做这件事,但随之而来的是一些疑问......
1) 例如,部分依赖来自 UI 的对象呢?
public class User(String name, IValidator validator)
假设我从 UI 中获取用户名,那么容器如何知道它并仍然为我提供这个对象?
2) 我还面临其他情况;如果一个依赖现在是一个已经实例化的对象,比如说......一个 SINGLETON 对象,例如。我看到了关于注入的依赖项的生命范围的设置(我在谈论 Spring.NET,例如 http 请求范围)...但是,请求和其他与 web 相关的东西在我的表示层,那么我如何在不违反任何设计规则的情况下链接我的表示层和我的域层(因为我的域应该完全不知道它在哪里被使用,不具有层依赖性等)
我很想听听大家的意见。非常感谢。
【问题讨论】:
-
今天有很多 DI 问题 =) 看看这个答案是否有帮助。 :stackoverflow.com/questions/5433211/…
-
它很有用@giddy,谢谢,但不是重点! =)
-
@Renato 只是认为这有助于解释为什么使用 DI。 =)
-
@giddy 确实对我的朋友有帮助!我已阅读并赞成您的回答,这对我来说是完全清楚的。发生的事情是我已经得到了你在那里解释的内容,所以我想我的疑问是这个问题更进一步。谢谢小伙伴的关心!欣赏!
标签: c# oop dependency-injection spring.net domain-model