Главная страница   /   2. Комплексный пример (Внедрение зависимостей в .NET

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

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

Марк Симан

2. Комплексный пример

Меню:

  • Комплексный пример
  • Как не стоит поступать
  • Как действовать правильно

Сообщение о том, что беарнский соус – это "эмульсионный соус, приготовленный из яичного желтка и масла", не привьет вам способность готовить этот соус. Самый лучший способ обучения – это практика; пример часто может преодолеть разрыв между теорией и практикой. Полезно понаблюдать за тем, как профессиональный повар готовит беарнский соус, перед тем, как попытаться приготовить его самостоятельно.

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

Большинство программного обеспечения является сложным в том плане, что ему нужно обращаться ко многим сущностям одновременно. Помимо бизнес-сущностей (которые сами по себе могут быть сложными), программное обеспечение должно также обращаться к сущностям, связанным с вопросами обеспечения безопасности, диагностики, операций и расширяемости. Вместо того обращения ко всем этим сущностям в одном большом комке, слабое связывание позволяет нам обращаться к каждой сущности по отдельности. Проще обращаться к каждой сущности изолированно – но, в конечном счете, мы все еще должны компоновать этот сложный набор сущностей. Давайте рассмотрим сложный пример для того, чтобы лучше продемонстрировать механизм внедрения зависимостей.

Предупреждение

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

Я посвятил всю эту главу сложному примеру. Думаю, что это важно – сравнить слабо связанный код с более "традиционным", сильно связанным примером, поэтому в этой главе вы найдете одну и ту же возможность, реализованную двумя способами. Сначала я подготавливаю почву, демонстрируя, как легко писать сильно связанный код. Затем я реализую ту же функциональность при помощи механизма внедрения зависимостей. Вы можете пропустить пример сильно связанного кода, если хотите прямо сейчас увидеть некоторый слабо связанный код. После прочтения этой главы вы должны уже начать понимать, как можно использовать DI для того, чтобы создавать слабо связанный код.

Рисунок 2-1: Эта глава содержит две разновидности одного и того же примера. Сначала вы увидите, как легко писать сильно связанный код. Затем вы увидите, как писать то же самое приложение при помощи слабо связанного кода. Оба примера содержат как сам пример, так и его анализ. Если вы хотите прямо сейчас увидеть слабо связанный код, то вы можете пропустить первый раздел.

2.1. Как не стоит поступать

2.2. Как действовать правильно

2.3. Расширение шаблонного приложения

2.4. Резюме