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

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

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

Марк Симан

Каталог DI

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

Как следует из названия части 2, это каталог паттернов, анти-паттернов и рефакторинга. Некоторые люди не любят паттерны проектирования, потому что считают их сухими или слишком абстрактными. Лично я люблю паттерны, потому что они обеспечивают нас языком высокого уровня, который делает нас более эффективными и краткими, когда мы обсуждаем программное обеспечение. Это мое намерение – использовать данный каталог, чтобы показать язык паттернов для DI. Хотя описание паттерна должно содержать некоторые обобщения, я попытался сделать каждый шаблон конкретным, с использованием примеров.

Вы можете прочитать все три главы в последовательности, но каждый элемент в каталог также описан так, что вы можете прочитать о нем отдельно.

Глава 4 содержит мини-каталог паттернов проектирования DI. В некотором смысле, эти паттерны представляют собой нормативное руководство о том, как реализовать DI, но вы должны знать, что я не считаю, что все они имеют одинаковое значение. Constructor Injection на сегодняшний день является наиболее важным паттерном проектирования, тогда как все остальные паттерны должны рассматриваться как крайние случаи, которые могут применяться в определенных условиях. Паттерн Ambient Context, в частности, должен быть использован настолько редко, что я серьезно задумывался не включать его в книгу (я оставил его только потому, что те, кто читают книги перед публикацией, попросили меня оставить его).

В то время как глава 4 дает вам набор обобщенных решений, глава 5 содержит каталог ситуаций, которых необходимо избегать. Эти анти-паттерны описывают общие, но неправильные пути решения типичных проблем DI. В каждом случае анти-паттерн рассказывает, как выявить проблему и как ее решить. Важно знать и понимать эти анти-паттерны, чтобы избегать ловушек, которые они расставляют, и поскольку в главе 4 представлен наиболее важный паттерн, наиболее важным анти-паттерном является Service Locator.

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

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

Часть 2 представляет полный каталог паттернов, анти-антипаттернов и рефакторинга. Я думаю, что это будет самая полезная часть книги, потому что она наиболее «устойчивая». Будем надеяться, что вы вернетесь к этим главам через месяцы или даже годы после первого прочтения.

4. DI паттерны

5. DI анти-паттерны

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