C#工厂模式和IoC之间的差异

时间:2011-01-24 11:50:13

标签: c# inversion-of-control design-patterns factory

  

可能重复:
  Dependency Injection vs Factory Pattern

有人可以解释(简单例子)工厂模式和反转控制模式之间的区别。最好使用.NET2.0

2 个答案:

答案 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中的依赖项。