【发布时间】:2011-09-12 02:19:16
【问题描述】:
我的理解是否正确 1) 理想情况下,resolve 方法应该只被调用一次,并一次构建整个应用程序图。 2) 库的类应该为 IoC 工具做好准备(发布所有依赖项),但不应“秘密”使用任何 IoC 容器;所以应该避免我们在除“bootsrapper”之外的任何其他层上创建容器的情况。 3) 将 IContainer 发送到子集群以进行额外的“解决”也是失败的决定。
这些原则对我来说非常合乎逻辑,我分享它们。但是我在回答这个问题时仍然有疑问:“为什么仍然使用诸如..之类的概念”
1) 瞬态生命周期 - 因为我们在启动时构建基础设施,所以所有对象都应该存在“应用生命周期”并且通常应该是单例;如果我们需要创建一些“每次调用”对象,那么使用 IoC 我们只解析他们的抽象工厂,这应该创建“每次调用”基础设施对象(避免“嵌套”容器和“瞬态”容器实例); 2)子容器,父/子容器; 3)“层级生命周期”。
现在我为自己解释这些概念是作为“没有理想世界”的解决方案存在的,但我可能会错过什么吗?
【问题讨论】:
标签: dependency-injection unity-container ioc-container