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

myt*_*nts 6 dependency-injection ioc-container

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

Mar*_*ann 6

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

这有时是必要的.看这些例子:

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

  • 没错:实体和价值对象往往过着独立的生活。从某种意义上说,它们仍然以某种方式由DI基础结构进行管理(理想情况下,一切都是如此),但是是以非常间接的方式进行的。它们通常是通过存储库等进行读写的,而*那些*是属于DI基础结构的服务。 (2认同)