Sobes.tech
Junior — Middle

როგორ შეიძლება განახორციელოს დამოკიდებულებების შეყვანა კოდში?

sobes.tech AI

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

Go-ში დამოკიდებულებების ინექცია (Dependency Injection, DI) შეიძლება განხორციელდეს რამდენიმე გზით, ენის თავისებურებების გათვალისწინებით:

  1. ფუნქციებისა და კონსტრუქტორების პარამეტრებით — ყველაზე გავრცელებული და მარტივი მეთოდი. დამოკიდებულებები გადაეცემა აშკარად ობიექტის შექმნისას ან ფუნქციის გამოძახებისას.
type Service struct {
    repo Repository
}

func NewService(r Repository) *Service {
    return &Service{repo: r}
}
  1. ინტერფეისების გამოყენებით — საშუალებას აძლევს მარტივად შეცვალოთ დამოკიდებულებების რეალიზაციები ტესტირებისთვის ან გაფართოებისთვის.

  2. DI-ისთვის პაკეტები — არსებობს მესამე მხარის ბიბლიოთეკები (მაგალითად, Uber Fx, Google Wire), რომლებიც ეხმარებიან დამოკიდებულებების ავტომატიზაციაში, თუმცა მათი გამოყენება არ არის სავალდებულო.

  3. გლობალური ცვლადები ან singleton-ები — ნაკლებად სასურველი მეთოდი, რადგან აქვს პრობლემები ტესტირებადობასა და შენარჩუნებაში.

Go-ში ჩვეულებრივ, უპირატესობა ენიჭება აშკარად ინექციას პარამეტრებით, რაც ზრდის კოდის წაკითხვადობას და სიმარტივეს.