Sobes.tech
Back to questions
Junior — Middle
91

Можешь объяснить принцип внедрения зависимостей в Dart и как его использовать?

Answer from AI

sobes.tech AI

Внедрение зависимостей (Dependency Injection, DI) в Dart — это способ передавать необходимые объекты (зависимости) в классы или функции вместо создания их внутри. Это повышает тестируемость и гибкость кода.

В Dart DI можно реализовать разными способами:

  • Конструкторная инъекция — зависимости передаются через конструктор класса.
  • Сервис-локатор — глобальный объект, который предоставляет зависимости по запросу.
  • Пакеты для DI — например, get_it для сервис-локатора или injectable для генерации кода.

Пример конструкторной инъекции:

class ApiService {
  void fetchData() {
    print('Fetching data');
  }
}

class Repository {
  final ApiService apiService;

  Repository(this.apiService);

  void load() {
    apiService.fetchData();
  }
}

void main() {
  final apiService = ApiService();
  final repository = Repository(apiService); // Внедрение зависимости

  repository.load();
}

Здесь Repository не создает ApiService самостоятельно, а получает его извне, что облегчает замену ApiService на мок для тестов или другую реализацию.