Внедрение зависимостей в сравнении с шаблоном фабрики

Если вы получаете сообщение об ошибке с SQuirreL Client при выполнении SQL-запроса с точкой с запятой, например CREATE PROCEDURE, вам нужен плагин MySQL. Вы можете выбрать его при установке. Он не выбран по умолчанию.

479
задан 11 revs, 2 users 100% 13 September 2012 в 05:36
поделиться

8 ответов

я полагаю, что DI является способом формирования или instantianting боб. DI может быть сделан во многих отношениях как конструктор, метод считывания метода set и т.д.

, Шаблон "фабрика" является просто другим способом инстанцировать бобов. этот шаблон будет использоваться главным образом, когда необходимо будет создать объекты с помощью шаблона разработки фабрики, потому что при использовании этого шаблона Вы не настраиваете свойства боба, только инстанцируете объекта.

Проверка эта ссылка: Внедрение зависимости

2
ответ дан harshit 13 September 2012 в 16:36
поделиться

Binoj,

я не думаю, что необходимо выбрать один по другому.

действие перемещения зависимого класса или интерфейса к конструктору класса или методу set следует за шаблоном DI. Объект Вы передаете конструктору или устанавливаете, может быть реализован с Фабрикой.

, Когда использовать? Используйте шаблон или шаблоны, которые находятся в Вашей рулевой рубке разработчика. С чем они чувствуют себя больше всего комфортно и находят самыми легкими понять.

2
ответ дан Jason Slocomb 13 September 2012 в 16:36
поделиться

Существуют проблемы, которые легко решить с внедрением зависимости, которые так легко не решены с комплектом фабрик.

Часть различия между, с одной стороны, инверсия управления и внедрения зависимости (МОК/DI), и, с другой стороны, сервисный локатор или комплект фабрик (фабрика):

МОК/DI является полной экосистемой объектов области и сервисов в и себя. Это настраивает все для Вас в способе, которым Вы указываете. Ваши объекты области и сервисы создаются контейнером и не создают себя: они поэтому не имеют никакой зависимости от контейнера или ни от каких фабрик. МОК/DI разрешает чрезвычайно высокую степень конфигурируемости, со всей конфигурацией в единственном месте (конструкция контейнера) в верхнем слои Вашего приложения (GUI, веб-фронтенд).

краткие обзоры Фабрики далеко часть конструкции Ваших объектов области и сервисов. Но объекты области и сервисы все еще ответственны за выяснение, как создать себя и как получить все вещи, от которых они зависят. Все эти "активные" зависимости фильтруют полностью через все слои в Вашем приложении. Нет никакого единственного места для движения для конфигурирования всего.

40
ответ дан yfeldblum 13 September 2012 в 16:36
поделиться

Я полагаю, что DI является типом уровня абстракции на фабриках, но они также предоставляют преимущества вне абстракции. Истинная фабрика знает, как инстанцировать единственного типа и настроить его. Хороший уровень DI обеспечивает способность, через конфигурацию, инстанцировать и настроить много типов.

, Очевидно, для проекта с несколькими простыми типами, который требует относительно стабильной бизнес-логики в их конструкции, шаблон "фабрика" прост понять, реализовать, и работает хорошо.

OTOH, если у Вас есть проект, содержащий многочисленные типы, реализации которых Вы ожидаете изменять часто, DI дает Вам гибкость через свою конфигурацию, чтобы сделать это во времени выполнения, не имея необходимость перекомпилировать Ваши фабрики.

16
ответ дан Will 13 September 2012 в 16:36
поделиться

С внедрением зависимости клиент не должен получать его зависимости самостоятельно, его все подготовились заранее.

С фабриками, кто-то должен назвать их для окончания сгенерированных объектов к месту, где они необходимы.

различие заключается главным образом в этой строке, где вызов фабрики и выборка созданного объекта сделаны.

, Но с фабриками необходимо записать эту 1 строку везде, Вам нужен такой объект. С DI просто необходимо создать проводное соединение (отношение между использованием и созданным объектом) однажды и просто полагаться на присутствие объекта позже везде. С другой стороны DI часто требует немного больше (сколько зависит от платформы), работа над стороной подготовки.

5
ответ дан Kosi2801 13 September 2012 в 16:36
поделиться

Я предложил бы сохранить понятия простыми и простыми. Внедрение зависимости является большим количеством архитектурного шаблона для слабой связи компонентов программного обеспечения. Шаблон "фабрика" является всего одним способом разделить ответственность создания объектов других классов к другому объекту. Шаблон "фабрика" можно назвать как инструмент для реализации DI. Внедрение зависимости может быть реализовано во многих отношениях как DI с помощью конструкторов, с помощью отображающий XML-файлы и т.д.

214
ответ дан Perpetualcoder 13 September 2012 в 16:36
поделиться
  • 1
    Этот doesn' t работают когда тип контента isn' t право... – Ron Reiter 15 July 2013 в 01:00

При использовании фабрики код все еще на самом деле ответственен за создание объектов. DI Вы производите ту ответственность на стороне перед другим классом или платформой, которая является отдельной от Вашего кода.

284
ответ дан Fuhrmanator 13 September 2012 в 16:36
поделиться

Мои мысли:

Внедрение зависимостей: передайте соавторов в качестве параметров конструкторам. Структура внедрения зависимостей: универсальная и настраиваемая фабрика для создания объектов, которые будут передаваться в качестве параметров конструкторам.

1
ответ дан 22 November 2019 в 22:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: