有人可以解释(简单例子)工厂模式和反转控制模式之间的区别。最好使用.NET2.0
答案 0 :(得分:16)
工厂模式: 需要引用服务的对象应该知道创建服务的工厂:
public class BLLObject
{
public IDal DalInstance { get; set; }
public BLLObject()
{
DalInstance = DalFactory.CreateSqlServerDal();
}
}
Ioc模式(或依赖注入):
对象只需要使用Ioc模式的任何方面(构造函数,设置器或接口等)声明它对服务的需求 容器将尝试满足这一需求:
public class BLLObject
{
public IDal DalInstance { get; set; }
public BLLObject(IDal _dalInstance)
{
DalInstance = _dalInstance;
}
}
这意味着在工厂模式中,对象决定使用哪种创建方法(通过选择特定的具体工厂),但在Ioc模式中,由容器来决定。
当然这不是唯一的尊重,但这是我暂时想到的。 如果我错了,请纠正我?
答案 1 :(得分:1)
工厂模式是关于获取对类型的引用,因此在代码中的某个地方,您将调用工厂来解决某些问题。
控制模式的反转意味着您通常会使用Ioc容器来解析依赖关系。这可能与工厂类似,或者更典型的是您将使用依赖注入来解析构造函数或setter中的依赖项。