如下所示,在复杂对象创建的情况下该怎么做:
A a = new A();
B b = new B(a);
C c = new C(b);
在这种情况下,我应该尝试创建某种工厂,还是使用依赖注入容器,或者某种类型的构建器?
具体而言,我希望实现以下目标:
C c = factory.createC();
答案 0 :(得分:2)
这取决于许多因素,包括:
通常,对于可以在应用程序启动时解决的依赖项,可以通过IoC容器注入依赖项。
如果在执行期间需要数据输入,那么通常工厂是正确的方法,您可以在参数中将数据输入提供给工厂方法,并且工厂可以为该组输入返回正确解析的实例。请注意,工厂本身仍应理想地插入IoC容器中。
对于主要数据依赖关系,您可能需要考虑构建器。
对于其他方案,如自定义生命周期,混合功能+数据依赖性等,您可能需要使用更多自定义方法。虽然如果有的话,定制可能更倾向于工厂或建筑商,但也许工厂/建筑商本身仍然使用依赖注入和通过IoC容器解决。