48 containers factory inversion-of-control
我决定在一个更大的项目中使用IoC原则.但是,我想得到的东西很长一段时间一直困扰着我.我得出的结论是IoC容器是一种架构模式,而不是一种设计模式.换句话说,没有类应该知道它的存在,并且应该在应用层使用容器本身来缝合所有组件.从本质上讲,它是一个精心设计的面向对象模型的选择.话虽如此,如何在不占用IoC容器的情况下访问已解析的类型(无论它们是否抽象)?我在这里看到的唯一选择是利用使用IoC容器来解析具体类型的抽象工厂.这应该很容易换掉一组标准工厂.这是一个好方法吗?有没有人在这里使用它以及它对你有用吗?还有别的吗?
谢谢!
Mar*_*ann 69
正如您已经想到的那样,依赖注入(DI)本身只是模式和技术的集合.
在应用程序的根目录,我们连接所有必要的对象图.这个地方叫做组合根,我们可以使用DI容器为我们做这个接线,或者我们可以手动做(Pure DI).
关键是在您的应用程序中只有一个地方强烈引用特定的技术(您的DI容器).应用程序的其余部分幸福地不知道对象图是如何连接的 - 所有重要的是所有必需的依赖项都被正确注入(并且你可以使用带有Null Guards的Constructor Injection来保证这样).
在DI方面,抽象工厂模式是一个非常有用的模式.实质上,在以下情况下使用Abstract Factory:
示例和更多信息可在此处获得: