Sobes.tech
Middle

Какви инструменти за внедряване на зависимости (DI) използвате в продукция?

sobes.tech AI

Отговор от AI

Най-често използвам GetIt в комбинация с injectable.

GetIt е прост Service Locator, който лесно се интегрира с други рамки. Предоставя стандартни методи за регистриране на услуги:

// Регистрация на сингълтон
GetIt.instance.registerSingleton<ApiService>(ApiService());

// Регистрация на фабрика
GetIt.instance.registerFactory<UserRepository>(() => UserRepository());

injectable е генератор на код, който позволява да се анотират класове и да се генерира код за GetIt, значително улеснявайки процеса на внедряване на зависимости:

// Пример за анотиране на клас за GetIt с помощта на injectable
@lazySingleton
class ApiService {}

// Команда за генериране на код за GetIt
// flutter pub run build_runner build

Комбинацията от тези инструменти позволява да се използват както предимствата на Service Locator (от GetIt), така и на Dependency Injection (чрез автоматично генериране на код с injectable), като прави DI в проекта по-управляем и по-малко податлив на грешки.

Също така съм използвал Provider за прости случаи или в проекти, където вече се използва управление на състоянието на базата на Provider, тъй като той може да служи и за DI. Въпреки това, за по-големи корпоративни приложения предпочитам комбинацията GetIt/injectable.