有状态对象的IoC依赖注入(非全局)

时间:2011-01-13 03:18:40

标签: dependency-injection ioc-container

我是IoC和DI业务的新手 - 我觉得如果你传递的是全球范围的对象,我会得到这个概念,但是当你需要传递一个对象时,我不知道它是如何工作的具有特定逻辑状态的对象。因此,例如,如果我想将一个人对象注入一个写文件命令对象 - 我将如何动态选择正确的人对象?从我所看到的,我可以默认构造对象,但我的断开是你不会使用默认的人物对象,它需要是动态的。我假设IoC容器可能只是在它被传递时为你维护对象的状态,但是那时你认为你只处理一个人对象,因为没有线程安全,对吧?我知道我错过了一些东西,(可能是工厂类的东西),但我需要更多关于它如何起作用的信息。

2 个答案:

答案 0 :(得分:6)

好吧,您始终可以向您的使用者注入Abstract Factory并使用它来创建本地范围的对象。

这有时是必要的。请参阅以下示例:

但是,一般而言,我们倾向于不将DI用于实体,而主要用于服务。相反,实体通常是通过某种存储库创建的。

答案 1 :(得分:4)

当你构造一个服务对象(例如WriteFileService)时,你会在内部注入它需要的东西来完成它的工作。也许它需要一个文件系统对象或其他东西。

示例中的Person对象应作为方法调用的参数传递给服务对象。例如writeFileService.write(person)