Oop 依赖注入-在构造函数和容器之间的某个地方
我目前的情况是,我正在为一个小模块使用构造函数依赖项注入,该模块适合于更大的web框架 它的工作很好,但是现在引入了一个新类,需要向它传递两个对象。但是,其中一个对象需要进行大量的设置工作——本质上,它涉及4个方法调用,这些方法调用创建其他对象,以便使其进入工作状态,准备传递给我的对象 我的缺点是,由于所涉及的工作,构造函数注入是没有用的,但是引入ioc容器太过分了,特别是对于这个一次性用例 那么,这应该如何处理呢?在这两种选择的中间是否存在某种解决方案? 你已经有了45种选择:Oop 依赖注入-在构造函数和容器之间的某个地方,oop,dependency-injection,inversion-of-control,Oop,Dependency Injection,Inversion Of Control,我目前的情况是,我正在为一个小模块使用构造函数依赖项注入,该模块适合于更大的web框架 它的工作很好,但是现在引入了一个新类,需要向它传递两个对象。但是,其中一个对象需要进行大量的设置工作——本质上,它涉及4个方法调用,这些方法调用创建其他对象,以便使其进入工作状态,准备传递给我的对象 我的缺点是,由于所涉及的工作,构造函数注入是没有用的,但是引入ioc容器太过分了,特别是对于这个一次性用例 那么,这应该如何处理呢?在这两种选择的中间是否存在某种解决方案? 你已经有了45种选择: 穷人的DI(
- 穷人的DI(手动创建对象并传递给构造函数)
- IoC容器
- 工厂法
- 抽象工厂
- 建筑商(谢谢,马克·希曼!)
- 穷人的DI(手动创建对象并传递给构造函数)
- IoC容器
- 工厂法
- 抽象工厂
- 建筑商(谢谢,马克·希曼!)
构造函数注入
,并且认为没有理由避免它
使用现代IoC框架,您可以通过工厂/工厂方法指定涉及“大量设置工作”的创建逻辑
无论构建IMyService
的实例需要多少步骤,您都可以简单地使用构造函数依赖项来注入它
container.AddFacility()
.登记(
Component.For().ImplementedBy(),
用于()的组件
.UsingFactoryMethod(k=>k.Resolve().Create())
);
var container=newunitycontainer();
container.RegisterType();
container.RegisterType(
新的InjectionFactory(c=>c.Resolve().Create());
我的难题是,由于工作原因,构造函数注入没有任何用处
涉及,
我更喜欢构造函数注入
,并且认为没有理由避免它
使用现代IoC框架,您可以通过工厂/工厂方法指定涉及“大量设置工作”的创建逻辑
无论构建IMyService
的实例需要多少步骤,您都可以简单地使用构造函数依赖项来注入它
container.AddFacility()
.登记(
Component.For().ImplementedBy(),
用于()的组件
.UsingFactoryMethod(k=>k.Resolve().Create())
);
var container=newunitycontainer();
container.RegisterType();
container.RegisterType(
新的InjectionFactory(c=>c.Resolve().Create());
相关:相关:
container.AddFacility<FactorySupportFacility>()
.Register(
Component.For<IMyFactory>().ImplementedBy<MyFactory>(),
Component.For<IMyService>()
.UsingFactoryMethod(k => k.Resolve<IMyFactory>().Create())
);
var container = new UnityContainer();
container.RegisterType<IMyFactory, MyFactory>();
container.RegisterType<IMyService>(
new InjectionFactory(c => c.Resolve<IMyFactory>().Create()));