Junior — Middle
როგორ შეიძლება განახორციელოს დამოკიდებულებების შეყვანა კოდში?
sobes.tech AI
პასუხი AI-სგან
Go-ში დამოკიდებულებების ინექცია (Dependency Injection, DI) შეიძლება განხორციელდეს რამდენიმე გზით, ენის თავისებურებების გათვალისწინებით:
- ფუნქციებისა და კონსტრუქტორების პარამეტრებით — ყველაზე გავრცელებული და მარტივი მეთოდი. დამოკიდებულებები გადაეცემა აშკარად ობიექტის შექმნისას ან ფუნქციის გამოძახებისას.
type Service struct {
repo Repository
}
func NewService(r Repository) *Service {
return &Service{repo: r}
}
-
ინტერფეისების გამოყენებით — საშუალებას აძლევს მარტივად შეცვალოთ დამოკიდებულებების რეალიზაციები ტესტირებისთვის ან გაფართოებისთვის.
-
DI-ისთვის პაკეტები — არსებობს მესამე მხარის ბიბლიოთეკები (მაგალითად, Uber Fx, Google Wire), რომლებიც ეხმარებიან დამოკიდებულებების ავტომატიზაციაში, თუმცა მათი გამოყენება არ არის სავალდებულო.
-
გლობალური ცვლადები ან singleton-ები — ნაკლებად სასურველი მეთოდი, რადგან აქვს პრობლემები ტესტირებადობასა და შენარჩუნებაში.
Go-ში ჩვეულებრივ, უპირატესობა ენიჭება აშკარად ინექციას პარამეტრებით, რაც ზრდის კოდის წაკითხვადობას და სიმარტივეს.