С# Разница между шаблоном factory и IoC

Возможный дубликат:
Инъекция зависимостей против Factory Шаблон

Может кто-нибудь объяснит (с примерами SIMPLE) разницу между шаблоном Factory и шаблоном инверсии управления. Предпочтительно использовать .NET2.0

Ответы

Ответ 1

Шаблон factory: объект, который нуждается в ссылке на службу, должен знать о factory, который создает Сервис:

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;
    }
}

что означает, что в шаблоне factory объект решает, какой метод создания (путем выбора конкретного конкретного factory) для использования, но в шаблоне Ioc это зависит от выбранного контейнера.

Конечно, это не единственное уважение, но это то, что на мой взгляд на данный момент. исправьте меня, пожалуйста, если я ошибаюсь?

Ответ 2

Образец factory - это получение ссылки на тип, поэтому где-то в коде вы вызываете factory, чтобы что-то решить.

Обращение шаблона управления означает, что вы обычно используете контейнер Ioc для разрешения зависимостей для вас. Это может быть аналогично factory, или, более типично, вы должны использовать инъекцию зависимостей для разрешения зависимостей в конструкторе или сеттерах.