Ответ
Внедрение зависимости (DI) — это паттерн проектирования, при котором зависимости объекта передаются извне, а не создаются внутри. Это делает код более гибким, тестируемым и удобным для поддержки.
Пример без DI:
type Service struct {
db *DB
}
func NewService() *Service {
return &Service{db: NewDB()}
}
Пример с DI:
type Service struct {
db DBInterface
}
func NewService(db DBInterface) *Service {
return &Service{db: db}
}
Преимущества:
- Упрощает тестирование (можно подменить зависимости моками)
- Уменьшает связность компонентов
- Делает код более гибким и переиспользуемым
В Go DI часто реализуется через интерфейсы и передачу зависимостей в конструктор.
Видео-ответы
▶
▶
▶
▶