Инверсия контроля <Инъекция зависимостей

У меня возникает ощущение, что нет такой вещи, как инверсия контроля или, скорее, правильный термин - инъекция зависимости. Я ошибаюсь, чтобы предположить это?

Я пытаюсь определить IoC для себя. При этом я многому научился о контейнерах IoC и инъекции зависимостей.

Как раз сейчас, я прочитал это из сайт Мартина Фаулера:

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

В мире современного IoC нет инъекции зависимостей только одним способом достижения IoC?

Ответы

Ответ 1

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

Например, в .NET такие среды, как ASP.NET или Windows Presentation Foundation, в конечном счете находятся под контролем, но предоставляют различные события и Швы, которые вы можете использовать для сборки приложение. То же самое можно сказать и на других платформах.

Инъекция зависимостей - это специализация IoC, которая применяет IoC специально для управления зависимостями.

Ответ 2

Это один из немногих моментов, по которым меня и Марк не согласны. По моей книге, принцип инверсии управления тот же, что и здесь, поэтому я не буду перефразировать его.

Включение зависимостей - это всего лишь акт экстернализации создания зависимостей внешнего мира по компонентам.

Управление этими зависимостями (и множеством других вещей) - это то, что Inversion of Containers Control, и использование DI как части этого, является просто детальностью реализации.

Ответ 3

Да, IoC означает, что сам класс не контролирует вещи, а вызывается извне. Инъекция зависимостей - это способ сделать это.

Инъекционная инъекция действительно намного более конкретный термин, более четко определенный, чем инверсия управления.