如何更好地解决工厂创建的对象中的依赖关系?
Posted
技术标签:
【中文标题】如何更好地解决工厂创建的对象中的依赖关系?【英文标题】:How better to resolve dependencies in object created by factory? 【发布时间】:2016-09-29 10:53:04 【问题描述】:例如我有依赖:
public interface IMyDependency
public class MyDependency : IMyDependency
在 MyClass 对象中注入:
public interface IMyInterface
public class MyClass : IMyInterface
[Dependency]
public IMyDependency MyDependency get; set;
我还有一个工厂,它创建 MyClass 实例:
public interface IFactory
IMyInterface CreateMyObject();
public class Factory : IFactory
public IMyInterface CreateMyObject()
// some checks before creation
// for. ex check if this type of object supported by OS and thow exception if not
return new MyClass();
...
container.RegisterType<IFactory, Factory>();
如果我使用“new”关键字创建 MyClass 实例,我的依赖项将无法解析。或者我应该逃离工厂并将逻辑移动到 MyClass 的构造函数中?并在容器中注册后,如 container.RegisterType()?
【问题讨论】:
【参考方案1】:对于独立于您正在创建的实例的依赖项,将它们注入工厂并存储它们直到需要。
对于独立于创建上下文但需要为每个创建的实例重新创建的依赖项,将工厂注入工厂并存储它们。
对于依赖于创建上下文的依赖,将它们传递到工厂的Create
方法中。
【讨论】:
以上是关于如何更好地解决工厂创建的对象中的依赖关系?的主要内容,如果未能解决你的问题,请参考以下文章