Главная страница   /   2.4. Резюме (Внедрение зависимостей в .NET

Внедрение зависимостей в .NET

Внедрение зависимостей в .NET

Марк Симан

2.4. Резюме

Поразительно легко писать сильно связанный код. Даже когда Мэри намеревалась написать трехуровневое приложение, это вылилось большей частью в монолитный фрагмент "спагетти-кода" (говоря о многоуровневом представлении, мы называем его "лазанья").

Одной из множества причин того, что писать сильно связанный код так легко, является то, что и возможности языка, и наши инструменты уже ведут нас в этом направлении. Если нам нужен новый экземпляр объекта, мы можем воспользоваться ключевым словом new, а если у нас отсутствует ссылка на требуемую сборку, Visual Studio облегчает процесс ее добавления.

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

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

Внедрение через конструктор – это пример инверсии управления, поскольку мы инвертируем управление зависимостями. Вместо того чтобы создавать экземпляры при помощи ключевого слова new, мы делегируем эту ответственность стороннему компоненту. Как мы увидим из следующей главы, мы называем это место Composition Root. Это то место, в котором мы компонуем все слабо связанные классы приложения.