#principles
Внедрение зависимостей (Dependency injection, DI)
Внедрение зависимостей — это стиль настройки объекта, при котором поля объекта задаются внешней сущностью. Другими словами, объекты настраиваются внешними объектами. DI — это альтернатива самонастройке объектов.
Эта концепция состоит в том, чтобы перенести ответственность за создание экземпляра объекта из тела метода за пределы класса и передать уже созданный экземпляр объекта обратно.
Звучит это все довольно абстрактно, так что вот пример:
Представьте себе очень простую зависимость между двумя классами: класс «Автомобиль» (Car) зависит от класса «Двигатель» (CarEngine).
Однако, мы знаем, что это стоит программировать с помощью интерфейса: (№1)
Но, чтобы изолировать класс Car, недостаточно ввести интерфейс Engine. В коде класса Car также должно быть невозможным создание нового экземпляра класса CarEngine: (№2)
Теперь с помощью этого дизайна можно создавать экземпляры класса Car: (№3)
Внедрение зависимостей (Dependency injection, DI)
Внедрение зависимостей — это стиль настройки объекта, при котором поля объекта задаются внешней сущностью. Другими словами, объекты настраиваются внешними объектами. DI — это альтернатива самонастройке объектов.
Эта концепция состоит в том, чтобы перенести ответственность за создание экземпляра объекта из тела метода за пределы класса и передать уже созданный экземпляр объекта обратно.
Звучит это все довольно абстрактно, так что вот пример:
Представьте себе очень простую зависимость между двумя классами: класс «Автомобиль» (Car) зависит от класса «Двигатель» (CarEngine).
Однако, мы знаем, что это стоит программировать с помощью интерфейса: (№1)
Но, чтобы изолировать класс Car, недостаточно ввести интерфейс Engine. В коде класса Car также должно быть невозможным создание нового экземпляра класса CarEngine: (№2)
Теперь с помощью этого дизайна можно создавать экземпляры класса Car: (№3)