Re[20]: О "наивном" DI и об архитектурном бессилии
От: · Великобритания  
Дата: 26.09.16 21:51
Оценка:
Здравствуйте, #John, Вы писали:

J>Подумал, если DI, IoC, Singleton сравнивать с реальной жизнью.

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

Но если тебе так хочется, вот моя аналогия.

J>Представим что у нас есть 1000 новостей, которую мы хотим рассказать городу.

J>* Singleton — вешаем доску с новостями и каждый житель города, сам решает когда ему подойти и прочитать что он хочет.
Это скорее всего большой открытый базар-толкучка. Ибо доска read only, а синглтоны — ВНЕЗАПНО меняются. Особенно такие как HttpContext.CurrentRequest.

J>* DI — мы попомним, чем интересуется каждый из жителей и когда у нас появляются новости, мы бежим в нужную квартиру доложить о новостях.

Это что-то типа заказа по интернету. Задекларировал "нужны штаны и ведро картошки", тебе их привозят домой с помощью специально организованной службы доставки (wiring code), тебя как клиента не интересует как служба работает. Служба доставки знает что кому нужно и организует логистику чтобы всем всё доставлять.

J>* IoC

Ты наверное имеешь в виду Service Locator.
SL и DI — это паттерны, которые реализуют принцип IoC — когда не ты сам идёшь за тем, что тебе надо, а тебе дают то что тебе надо.

J>SL — у каждого жителя включен телефон и мы вещаем в тел. новости пачками иногда доставляя их не тем кто их ждет.

Что-то вроде специализированных магазинов. Ты знаешь где продаются штаны и туда ходишь.

J>Проблема IoC в том что нам сложно/дорого провести нормальную связь к каждому из жителей.

Проблема — идёшь в магазин, а он закрыт, или товар заканчивается и ты остаёшься без штанов, или там жуткая очередь.

J>Проблема DI в том что нам надо помнить кому что надо знать и постоянно бегать к жителям домой. (а они гады иногда спят, едят, гуляют где-то в вне квартиры).

Проблема — нужна компьютерная грамотность у населения. Зачем жамкать какие-то кнопки у шайтан-машины, когда можно как мой дед выйти вон на ту площать и купить/продать ведро картошки.

J>Проблема Singleton в том что возле доски может собраться большая толпа людей и они могут приходить в неправильной последовательности как нам хотелось бы.

Проблема — пришел за штанами в знакомое место, а там офигенная очередь, или продавец ими больше не торгует, или на обед решил сходить. Ещё надо хорошо помнить и знать куда за чем ходить.

J>Но, если взглянуть на жизнь со стороны, то решать проблемы с Singleton проще/дешевле/лучше, чем другими методами:

J>городские телефоны у нас глючат(бывает такое что слышем в трубке соседей)/IoC/, доставляя неудобства; почтальоны, те кто снимают показания с щетчиков, раздают повестки приходят когда нас нет дома/DI/, теряют на это драгоценно время всего общества. Но, когда мы приходим в налоговую или к врачу, всегда можно взять талончик и узнать приблизительно время, когда можно подойти или записаться на определенно время(хз, может еще не везде так, но упустим политику)/Singleton/, тут у нас страдает(или вообще нет), только отдельно взятый юнит.
signleton подходит для небольших городов. В городах побольше уже образуются несколько базаров, пришел в один — ничего нет, поехал в другой. А где-то очереди, а где-то пусто, а где-то густо. И сложно угадать что когда и какого качества сможешь купить.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.