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 на мок для тестов или другую реализацию.