• 53754
  • 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
812

Загрузка...
Loading...

Комментарии

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

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

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

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

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Алматинский учитель поставил диагноз системе, частью которой является образование. Будучи успешным юристом, имевший степень МВА, он вдруг развернул траекторию своей карьеры, став обычным учителем.
Zhumanova
22 сент. 2017 / 16:26
  • 8793
  • 17
«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

Досталось и Скриптониту, который ранее опубликовал запись, о том, что больше не будет сниматься в клипе Гуфа и Тимати. "Я тебя ни о чем больше не попрошу, казах ты мой дорогой" - высказался рэпер.
tala03
21 сент. 2017 / 15:48
  • 4105
  • 12
Почему депутат Божко хочет ограничить приток сельской молодёжи в города?

Почему депутат Божко хочет ограничить приток сельской молодёжи в города?

Вице-спикер Мажилиса Владимир Божко остановился на некоторых деталях известного конфликта в Астане возле строящегося «Абу Даби Плаза», затронув проблему «многочисленной сельской молодёжи»...
openqazaqstan
19 сент. 2017 / 13:16
  • 2823
  • 64
«Моя депрессия длилась больше двух лет». История о том, как я была готова сдаться

«Моя депрессия длилась больше двух лет». История о том, как я была готова сдаться

По данным статистики 2017 года Казахстан занимает 4 место по самоубийствам. Говорить об этом - социальное табу. Мы игнорируем разговоры о депрессиях. Потому что нам страшно.
goribaldi
18 сент. 2017 / 15:45
  • 2797
  • 91
«Папина принцесса» или «обезьяна с гранатой»? Случай в бассейне

«Папина принцесса» или «обезьяна с гранатой»? Случай в бассейне

Мужчины спокойно подчиняются логичным правилам, большинство женщин пытаются выторговать себе особые условия. Я убеждалась в этом много раз.
ValentinaVladimirska
18 сент. 2017 / 14:25
  • 2256
  • 35
Лайфхаки для путешественников. Как я не заплатила ни цента за проживание в Испании

Лайфхаки для путешественников. Как я не заплатила ни цента за проживание в Испании

Бесплатное проживание и завтрак в Испании, как прокачать иностранный язык и где поймать бесплатные ништяки в Европе. Если вы backpacker, который пересекает границу разных стран каждую неделю -...
dianaobyrne
18 сент. 2017 / 12:16
  • 2823
  • 1
Мой опыт вегетарианства: «Я ела овощи, и сама стала как овощ»

Мой опыт вегетарианства: «Я ела овощи, и сама стала как овощ»

Три года назад начитавшись-наслушавшись кое-каких знаменитых людей, я решила завязать  с абсолютно любым мясом. Как же возмущались все мои близкие, это надо было видеть, но я была непреклонна.
Bonittta
18 сент. 2017 / 14:33
  • 2219
  • 33
«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

Мы не такие блатные. Да, нас унижают руководители, возомнившие себя ханами, часто наши права не реализуются в должной мере. И я всегда задавался, почему на самом деле нет нормальных условий и льгот...
WriterKz
23 сент. 2017 / 0:41
Путешественник был шокирован полицейским беспределом в Казахстане

Путешественник был шокирован полицейским беспределом в Казахстане

Полицейский беспредел в Казахстане осудил российский блогер и путешественник Евгений Золотухин. На своей странице он рассказал, как встретился с казахстанскими полицейскими, и как они оставили не...
tala03
18 сент. 2017 / 16:58
  • 1982
  • 13