Главная страница   /   6. DI рефакторинг (Внедрение зависимостей в .NET

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

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

Марк Симан

6. DI рефакторинг

Меню

  • Преобразование динамических значений в абстракции
  • Работа с недолговечными зависимостями
  • Разрешение циклических зависимостей
  • Работа с Constructor Over-injection
  • Мониторинг связывания

Вы могли заметить, что мне нравится sauce béarnaise или sauce hollandaise в целом. Одной из причин является то, что они очень хороши на вкус, а другая заключается в том, что их довольно сложно сделать. В дополнение к проблеме приготовления sauce hollandaise дает нам еще одно испытание: он должен быть подан немедленно (или мне так кажется).

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

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

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

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

Как и две предыдущие главы этой части книги, эта глава организована в виде каталога – на этот раз проблем и решений (или, если угодно, рефакторинга). Рисунок 6-1 показывает структуру главы.

Рисунок 6-1: Структура этой главы представляет собой каталог способов рефакторинга и решений обычных DI проблем. Каждый раздел является независимым.

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

6.1. Преобразование динамических значений в абстракции

6.2. Работа с недолговечными зависимостями

6.3. Разрешение циклических зависимостей

6.4. Обсуждение феномена Constructor Over-injection

6.5. Мониторинг связывания

6.6. Резюме