Ответ
Инверсия зависимостей (Dependency Inversion Principle, DIP) применяется, когда нужно уменьшить связанность между модулями и сделать код более гибким для тестирования и модификации.
Когда использовать:
- Когда модули зависят от абстракций, а не от конкретных реализаций
- Для упрощения замены зависимостей (например, моков в тестах)
- В архитектуре, где важна гибкость (например, плагины)
Пример:
// Плохо: компонент зависит от конкретного API
class UserService {
constructor(private api: ConcreteApi) {}
}
// Хорошо: зависит от интерфейса
interface ApiClient {
fetchUser(): Promise<User>;
}
class UserService {
constructor(private api: ApiClient) {}
}