Depend on abstractions, not on concretions.
Что такое модули верхних уровней? Как определить этот уровень? Как оказалось, все очень просто. Чем ближе модуль к вводу/выводу, тем ниже уровень модуля. Т.е. модули, работающие с BD, интерфейсом пользователя, низкого уровня. А модули, реализующие бизнес-логику — высокого уровня.
Что такое зависимость модулей? Это ссылка на модуль в исходном коде, т.е. import, require и т.п. С помощью динамического полиморфизма в runtime можно обратить эту зависимость.
Полный курс "Шаблоны разработки программного обеспечения" (ссылка на плейлист). Шаблоны GRASP, GoF, антипаттерны, рефакторинг Все материалы курса лекций (включая конспект лекций) на канале автора SlideShare
От себя. Я просмотрел пока что только 4 лекции но уже чувствую уверенность в тех знаниях что я уже приобрел. Однозначно подача хорошая, не занудная. Автор видно что не только знает предметнуб область но и любит в ней докапываться до "что, где, когда и почему".
Однозначно рекомендую всем кто желает углубить свои знания в области ПРАВИЛЬНОГО проектирования систем(бизнес логики). Великолепный курс! Спасибо автору за то что предоставляет её бесплатно на своём Youtube канале. Уверен что там есть ещё много чего полезного.