![]() |
1
3
通常,您应该防止使用运行时数据来创建和初始化应用程序组件,如前所述 here . 仅仅是运行时数据通过构造函数传递的事实就迫使您创建工厂。 由给出的解决方案 the article 将运行时数据注入组件的问题在于,让运行时数据通过以下任一方式在初始化对象图上的方法调用中流动:
当在对象图构造期间未使用运行时数据时,可以在组合根内使用DI创建组件,因此问题就不会出现。 然而,这样做并不总是可行的,否则,抽象工厂就是解决方案。
因为对象组合应该只在应用程序的
Composition Root
然而,这意味着你的抽象工厂
必须是
抽象。只有这样,你才能防止你的建筑
方法是:
不使用抽象意味着消费者将依赖于具体
|
![]() |
StayCool · Ninject。扩展。约定不会绑定单个接口 7 年前 |
![]() |
Nickso · 通用属性和IoC(Autofac)问题 7 年前 |
![]() |
LightCC · 如何在C中设置DI/IoC和/或工厂模式设计# 7 年前 |
![]() |
Eitan · 使用Castle动态代理拦截所有依赖项 7 年前 |