• 49619
  • 29
  • 13
Нравится блог?
Подписывайтесь!

Как с использованием IoC-контейнера "приготовить "спагетти-код"

Инверсия управления (Inversion of Control, IoC) — важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах и входящий в пятерку важнейших принципов SOLID. (Википедия).

Теперь, без лишних определений, посмотрим, как использовать IoC-контейнер в точности наоборот и, испортив архитектуру слабо-связанного кода, "приготовить "спагетти-код".


1. Перво-наперво, нужно создать сам IoC-контейнер в виде строго определенного класса. Автоматически, мы создали зависимость всего приложения от этой реализации IoC-контейнера, а реализацией может быть даже сторонний IoC-контейнер (свои собственные реализации контейнеров пишут очень редко).

2. Затем, следует зарегистрировать контейнер в самом себе (да-да!) и использовать его в конструкторах максимального количества классов.

3. Вуаля! В каждом классе, достаем из полученного в конструкторе IoC-контейнера, реализации для нужных нам интерфейсных классов.

Что мы получили в итоге? Пересыпанный приправой из IoC-контейнера спагетти-код, в котором слабой связанностью компонентов даже не пахнет и первым в этом будет виноват всё тот же IoC-контейнер.

В общем страшная реализация сервис-локаторов или синглтонов.

Теперь, попытаемся избежать участи страшного реализатора лапши из принципов ООП, а конкретно, при использовании IoC-контейнера.

1.1. Должен быть интерфейсный класс (интерфейс), который реализует работу с IoC-контейнером. И любую реализацию IoC-контейнера, мы "обворачиваем" в этот интерфейс. В результате, код приложения будет "приправлен" IoC-интерфейсом, а не конкретной реализацией IoC-контейнера.

2.1. Отвергайте любые "приправы" IoC-контейнером в конструкторах классов. Ни один класс не имеет права принимать в своем конструкторе IoC-контейнер.

3.1. Что это за штука в конструкторе? Что это за черный ящик из которого класс должен доставать объекты? Это IoC-контейнер? Подавайте в конструктор, исключительно реализации, которые специфически необходимы для класса. Поверьте, классу не нужен IoC-контейнер.

Исключением, могут быть только классы-регистраторы, скажем в модульной системе, где подключаемый модуль, тоже хочет чего-нибудь зарегистрировать в IoC-контейнере. Но следует обязательно соблюдать пункт 1.1.

m-r Tarakanoff tarakanoffth
The best C# and .NET days are ahead of us. (25 Mar 2010 by Miguel de Icaza)
13 июня 2011, 18:03
764

Загрузка...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Я был удивлён, что в Азербайджане есть Казахский район

Я был удивлён, что в Азербайджане есть Казахский район

Мне как казаху по национальности очень хотелось туда попасть. Оказалось, что климат там намного суровей и люди, говорят, суровые и воинственные. Казах – город на западе Азербайджана...
alidimash
18 янв. 2017 / 21:50
  • 29016
  • 18
10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

10 лучших районов Алматы. Широкие улочки, частные дома, летом – красота!

Названия улиц: Садовый бульвар, Солнечный проезд. Красиво звучит не так ли? Прям, как в Москве... Уютные улочки и радующие глаз одноэтажные домики, тихо и свободно, нет динамики, движух и ажиотажа.
gelberdeuet
16 янв. 2017 / 14:45
  • 8230
  • 98
Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Многочасовые очереди, смерти в ЦОНах: почему вопросы об этом ставят парламентариев в тупик?

Ожидали ли депутаты Мажилиса всего этого? Как планировали этот процесс регистрации, и обсуждали ли его, прежде чем одним нажатием кнопки принять нормы с такими абсурдными временными рамками?
openqazaqstan
17 янв. 2017 / 14:32
  • 4940
  • 22
Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

Астана глазами алматинских девушек. Как при таких погодных условиях можно выжить?

В спальных районах, и в высотных домах сквозь стены слышно завывание ветра. В особенности ночью. Такие звуки, я слышала, пожалуй, только по телевизору, в фильмах про метель.
Naomi_K
20 янв. 2017 / 12:36
Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

Сильное ДТП произошло в Алматы на Тимирязева-Байзакова

NoComment (c) Официальный слоган EuroNews. Катастрофа на алматинской утренней трассе началась с того, что водители «Ниссана» и микровена ожидали сигнала светофора на запад по Тимирязева...
ibestreporter
17 янв. 2017 / 22:52
  • 3782
  • 5
Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Вейпинг безопасен? Эндрю Холл из США тоже так считал, пока что-то не пошло не так

Эндрю Холл из США считал, что вейпинг безопасен и усиленно убеждал в этом близких. Но как-то раз что-то пошло не так. Это результат взрыва хипстерского устройства - выбило 7 зубов + ожоги и раны...
Maxambet
17 янв. 2017 / 16:28
  • 3740
  • 52
Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Это поколение просрет страну. 20-летняя молодежь представляет из себя сказочных эльфов

Смотря в очередные пустые глаза вчерашнего студента, приходящего устраиваться на первую работу страшно становится. Потому что сравниваю с теми же китайскими студентами, которые готовы выгрызать себе мечту.
mbaitykov
18 янв. 2017 / 11:34
Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Становится хуже, но как-то постепенно. Беднеем, но тоже как-то не разом

Помню, когда я уезжал и Казахстана, тут было довольно прилично, даже не смотря на то, что жить было невыносимо. Но прилично так. Мусора было меньше. Дороги чистили, вони почти не было. Да и в остальном тоже норм.
shootnix
18 янв. 2017 / 12:49
  • 3384
  • 34
Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Любимый Тайланд. Правящий король называет Паттайю «черным пятном на репутации страны»

Тайланд мы впервые посетили в декабре 2012 года. Полученные эмоции настолько были яркими, что в конце 2015 года мы решили еще разок слетать в Тайланд. Вспоминая Тай, первое о чем я думаю - горячий...
zhainar_d
17 янв. 2017 / 11:11
  • 3191
  • 24