Sobes.tech
Middle

Ի՞նչ գործիքներ եք օգտագործում կախվածության ներմուծման (DI) համար արտադրությունում։

sobes.tech AI

Պատասխան AI-ից

Ամենաշատ օգտագործում եմ GetItinjectable-ի հետ համատեղ:

GetIt-ը պարզ Ծառայության 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 զույգը։