Что такое dependency inversion principle

«Что такое dependency inversion principle» — вопрос из категории Архитектура, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Принцип инверсии зависимостей (DIP) гласит: модули верхнего уровня не должны зависеть от модулей нижнего уровня. Оба должны зависеть от абстракций. Абстракции не должны зависеть от деталей, детали должны зависеть от абстракций.

Пример в Go (интерфейсы как абстракции):

type DB interface {
    GetData() string
}

type MySQL struct{}
func (m MySQL) GetData() string { return "data from MySQL" }

type Service struct {
    db DB
}

func NewService(db DB) *Service {
    return &Service{db: db}
}

Здесь Service зависит от интерфейса DB, а не от конкретной реализации MySQL. Это позволяет легко подменять реализацию БД без изменения кода сервиса.

Видео-ответы