Инверсия зависимостей гарантирует, что ваши модули более высокого уровня не зависят от модулей более низкого уровня. Таким образом, логика вашего приложения не зависит от вашей бизнес-модели или бизнес-логики. Существует четкое разделение проблем.
Принцип гласит, что ваше приложение определяет и владеет интерфейсом, который должен реализовывать ваш бизнес-уровень. Таким образом, ваш бизнес-уровень зависит от определенного интерфейса вашего приложения. Таким образом, зависимости инвертированы.
Расширяем это, если у вас теперь есть три приложения, каждое из которых имеет свои собственные интерфейсы, реализованные бизнес-уровнем, который может изменить ваш бизнес-уровень, и до тех пор, пока они реализуют интерфейсы так, как должны, ваши приложения не будут мудрее. 1005 *
Хороший Java-пример этого принципа и того, как такой проект будет структурирован, можно найти здесь, на моем сайте: http://www.jeenisoftware.com/maven-dip-principle-example/
Инверсия зависимостей - это не столько дизайн интерфейса, но это то, что происходит, это скорее внедрение в сервис. Другими словами, это своего рода сервис-ориентированный шаблон проектирования.