Ответ
Принцип инверсии зависимостей (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. Это позволяет легко подменять реализацию БД без изменения кода сервиса.
Видео-ответы
▶
Собеседование Python developer на 3000$
▶
Тестовое собеседование Java разработчика #17 - Александр Дранкин
▶
Открытое собеседование на Middle Go-разработчика в Wildberries: код-ревью
▶
Джун был тимлидом, разрабатывал телеграм ботов и стал миддлом? / Техсобес Middle Python Developer
▶
Миддл с 3-мя годами опыта менторит студентов?? / Техсобес на позицию Middle Python Developer
▶
Собеседование C++
▶
Джун-самоучка получил оффер всего за день? / Техсобес Junior Python Developer / Mock interview
▶
Android-собеседование в Т-Банк. Теоретическая часть технического интервью
▶
У 11-ти классника уже 3 года опыта и собственная CRM на FastAPI?? / Техсобес Junior Python Developer
▶
Тестовое собеседование C# | .NET Junior Mock interview
▶
Тестовое собеседование C# | .NET Junior Mock interview
▶
Собеседование на позицию Java junior #1 Антон
▶
Собеседование на Junior Java разработчика
▶
Публичное собеседование по архитектуре фронтенда / Александр Зубов (Авито)
▶
Тестовое собеседование Java разработчика #20 - Игорь Самойлов