关于控制反转:C#工厂模式与IoC之间的差异

C# Difference between factory pattern and IoC

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Dependency Injection vs Factory Pattern

有人能(用简单的例子)解释工厂模式和控制模式反转之间的区别吗?最好使用.net2.0


工厂模式:需要引用服务的对象应该了解创建服务的工厂:

1
2
3
4
5
6
7
8
9
public class BLLObject
{
    public IDal DalInstance { get; set; }

    public BLLObject()
    {
        DalInstance = DalFactory.CreateSqlServerDal();
    }
}

IOC模式(或依赖注入):

对象只需要使用IOC模式的任何方面(构造函数、setter或接口…等)集装箱将尽力满足这一需求:

1
2
3
4
5
6
7
8
9
public class BLLObject
{
    public IDal DalInstance { get; set; }

    public BLLObject(IDal _dalInstance)
    {
        DalInstance = _dalInstance;
    }
}

这意味着在工厂模式中,对象决定使用哪种创建方法(通过选择特定的具体工厂),而在IOC模式中,则取决于容器的选择。

当然,这不是唯一的尊重,但这正是我目前的想法。如果我错了,请纠正我?


工厂模式是关于获取对类型的引用,因此在代码中的某个地方,您将调用工厂来解决某个问题。

控制模式的反转意味着您通常会使用IOC容器来解析您的依赖关系。这可能与工厂的方式类似,或者更典型地,您将使用依赖注入将依赖关系解析为构造函数或设置器。