Комментарии 5
вам нельзя писать такие материалы. я вот не самый тупой (мое личное мнение тут не учитывается), но из вашего текста ничего не понял.
Раньше логика поиска была прямо в методе, теперь она лежит в отдельном классе.
И если вдруг этот класс используется где-либо ещё, вылезут баги вида:
Почему нельзя добавить хлеб другого производителя? Потому что у него цена и вес совпадают уже с существующим.
А потом появляется новое поле, и надо править каждый класс, реализующий IComparator.
А если начинает появляться более узкий компаратор, который имеет смысл только для работы с ограниченным набором продуктов, узким местом становится код для выбора компаратора, иначе не соблюдается бизнес-логика. И это расплывается на большее и большее число классов, делая их более хрупкими.
Светильник не может быть в зависимости от винтика
То есть разрабатывая светильник мы придумываем свои уникальные параметры винтиков, а потом на заводе винтиков заказываем их изготовление?
Я почему то думал наоборот. Дизайнер светильника подбирает винтики из доступных в продаже.
Инверсия зависимостей классная штука для расширения мировоззрения, но я никак не могу согласится с автором этого принципа, что надо все инвертировать.
По логике дяди Боба нельзя использовать готовые библиотеки, т.к. оказывается что светильник зависит от винтиков, а не наоборот.
Спасибо за статью как за возможность задать такой вопрос )
Чистый код: инверсия зависимостей (DIP)