Внедрение зависимостей в .NET
Марк Симан
DI рефакторинг
Меню
- Преобразование динамических значений в абстракции
- Работа с недолговечными зависимостями
- Разрешение циклических зависимостей
- Работа с Constructor Over-injection
- Мониторинг связывания
Вы могли заметить, что мне нравится sauce béarnaise или sauce hollandaise в целом. Одной из причин является то, что они очень хороши на вкус, а другая заключается в том, что их довольно сложно сделать. В дополнение к проблеме приготовления sauce hollandaise дает нам еще одно испытание: он должен быть подан немедленно (или мне так кажется).
Раньше это было далеко от идеала, когда у меня были гости. Вместо того, чтобы приветствовать своих гостей и заставить их чувствовать себя желанными и расслабленными, я отчаянно взбивал соус на кухне, оставив их развлекать самих себя.
После нескольких повторных выступлений, моя очень общительная жена решила взять дело в свои руки. Мы живем через дорогу от ресторана, так что в один прекрасный день она разговорила поваров, чтобы выяснить секрет, который позволил бы мне приготовить подлинный голландский соус заблаговременно. Оказывается, что такой секрет есть, так что теперь я могу сделать вкусный соус для моих гостей, не подвергая их в атмосферу стресса и безумия.
Каждый имеет свои хитрости. Это также верно для разработки программного обеспечения в целом и, в частности, DI. Есть проблемы, которые просто продолжают появляться, и во многих случаях существуют хорошо известные способы борьбы с ними.
На протяжении многих лет я видел, как люди прилагают все усилия для изучения DI, и мне пришло в голову, что многие из вопросов похожи по своей структуре. В этой главе мы рассмотрим наиболее распространенные проблемы, которые появляются, когда мы применяем DI к коду, и как мы можем решить их. Когда мы закончим, вы должны быть в состоянии лучше распознавать и решать такие проблемы, когда они появляются.
Как и две предыдущие главы этой части книги, эта глава организована в виде каталога – на этот раз проблем и решений (или, если угодно, рефакторинга). Рисунок 6-1 показывает структуру главы.
Рисунок 6-1: Структура этой главы представляет собой каталог способов рефакторинга и решений обычных DI проблем. Каждый раздел является независимым.
В каждом разделе я представлю общую проблему и ее решение, в том числе на примере. Вы можете прочитать каждый раздел самостоятельно или в последовательности, как вам удобнее. Цель каждого раздела заключается в ознакомлении с решением часто встречающихся проблем, в том, что вы будете лучше оснащены для борьбы с ними, если вы с ними столкнетесь.
Преобразование динамических значений в абстракции
Работа с недолговечными зависимостями
Разрешение циклических зависимостей