Кадом асбобҳои ворид кардани вобастагиро (DI) дар истеҳсолот истифода мебаред?
sobes.tech AI
Ҷавоб аз AI
Беҳтарин истифодаи GetIt бо ҳамроҳии injectable мебошад.
GetIt як Ҷойгиркунандаи Хизматҳоест, ки ба осонӣ бо дигар рамзҳо ҳамкорӣ мекунад. Он усулҳои стандартӣ барои сабти хидматҳо пешниҳод мекунад:
// Сабти singleton
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-ро афзал медонам.