Чистая архитектура - Мартин, Роберт Чистая архитектура:
Самые гибкие системы - это те, в которых компоненты зависят от абстракций, а не от конкретных реализаций. Речь идёт об изменчивых реализациях, в отличие, например, от стабильных классов ЯП. Интерфейсы, например, меняются гораздо реже, чем конкретные классы, поэтому лучше зависеть от интерфейса. Полностью инвертировать зависимости в любом случае не удастся, так как экземпляры классов должны где-то создаваться. Таким местом может быть main или некоторый класс конфигурации приложения.
Архитектура ПО в Spring 5 Архитектура ПО в Spring 5:
- Входят ли опубликованные интерфейсы / абстрактные классы в состав модулей? Должны.
- Создаются ли новые экземпляры в коде вручную? Не должны, этим может заниматься фреймворк или специальные фабричные классы / методы.
Wikipedia: DIP