Sobes.tech
Middle

რა ინსტრუმენტები გამოიყენეთ დამოკიდებულების ინექციისთვის (DI) წარმოებაში?

sobes.tech AI

პასუხი AI-სგან

ყველაზე ხშირად ვიყენებ GetIt-ს injectable-თან ერთად.

GetIt არის მარტივი სერვისის მოძიებელი, რომელიც ადვილად ინტეგრირდება სხვა ჩარჩოებთან. ის უზრუნველყოფს სტანდარტულ მეთოდებს სერვისების რეგისტრაციისთვის:

// სინგლტონის რეგისტრაცია
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-ის წყვილს.