![]() |
1
3
通常,您应该防止使用运行时数据来创建和初始化应用程序组件,如前所述 here . 仅仅是运行时数据通过构造函数传递的事实就迫使您创建工厂。 由给出的解决方案 the article 将运行时数据注入组件的问题在于,让运行时数据通过以下任一方式在初始化对象图上的方法调用中流动:
当在对象图构造期间未使用运行时数据时,可以在组合根内使用DI创建组件,因此问题就不会出现。 然而,这样做并不总是可行的,否则,抽象工厂就是解决方案。
因为对象组合应该只在应用程序的
Composition Root
然而,这意味着你的抽象工厂
必须是
抽象。只有这样,你才能防止你的建筑
方法是:
不使用抽象意味着消费者将依赖于具体
|
![]() |
Nikolay K · Castle Windsor从类内拦截方法调用 9 年前 |
![]() |
user3643376 · Unity ResolveAll泛型接口 9 年前 |
![]() |
Ilias Kouroudis · 绕过Laravel服务提供商 9 年前 |
![]() |
Wojciech Kozaczewski · 实体框架-容器的并发使用 9 年前 |
![]() |
vishal mane · 在不使用容器的情况下从配置进行统一拦截 10 年前 |