Внедрение зависимостей - это способ реализации инверсии шаблона управления для избежания глобального состояния для разрешения зависимостей.Вы можете использовать инверсию шаблона управления с или без внедрения зависимости.Да, не использование глобальных переменных является важной частью уравнения, если вы используете инъекцию зависимостей или нет.
Инжекция зависимостей - это не что иное, как если бы вы писали программу в стиле снизу вверх, где наиболееНа уровне части приложения разрешены зависимости для всех подсистем.Скажем, у меня была программа с конфигурацией внедрения зависимостей, например:
<bean id="world" class="com.game.World" start-method="play">
<property name="player1" ref="player1"/>
<property name="player2" ref="player2"/>
</bean>
<bean id="player1" class="com.game.LocalPlayer"/>
<bean id="player2" class="com.game.NetworkPlayer/>
Это действительно не отличалось бы от создания объектов вручную:
public static void main() {
World world = new World();
world.player1 = new LocalPlayer();
world.player2 = new NetworkPlayer();
world.play();
}
Использование внедрения зависимости просто означаетНаписание кода, как указано выше, обрабатывается для вас.В этом простом примере вы не сможете использовать его вместо простого кода, но в больших программах это сэкономит вам много времени.Это также не позволяет вам или членам команды использовать ярлыки, потому что они не так широко открыты, как при написании кода.
Фреймворки внедрения зависимостей изменяют вашу программу с кода императивного стиля на язык декларативного стиля для зависимостей.Итак, вы пишете программу на этом декларативном языке, и вы можете дополнить его множеством других функций.
Такие функции, как наличие каркаса, решают для вас порядок построения и циклические зависимости.Объявление внешней конфигурации и внедрение значений в объявленные вами объекты (например, файлы свойств, конфигурация XML и т. Д.) - это действительно приятно.Все это вместе делает структуры внедрения зависимостей весьма привлекательными для использования по сравнению с выполнением всего этого самостоятельно.