Чистая архитектура - Мартин, Роберт Чистая архитектура:

Самые гибкие системы - это те, в которых компоненты зависят от абстракций, а не от конкретных реализаций. Речь идёт об изменчивых реализациях, в отличие, например, от стабильных классов ЯП. Интерфейсы, например, меняются гораздо реже, чем конкретные классы, поэтому лучше зависеть от интерфейса. Полностью инвертировать зависимости в любом случае не удастся, так как экземпляры классов должны где-то создаваться. Таким местом может быть main или некоторый класс конфигурации приложения.

Архитектура ПО в Spring 5 Архитектура ПО в Spring 5:

  • Входят ли опубликованные интерфейсы / абстрактные классы в состав модулей? Должны.
  • Создаются ли новые экземпляры в коде вручную? Не должны, этим может заниматься фреймворк или специальные фабричные классы / методы.

Wikipedia: DIP