Junior — Middle
Кадом усулҳо метавонанд барои иҷрои ворид кардани вобастагиҳо дар код истифода шаванд?
sobes.tech AI
Ҷавоб аз AI
Дарунивии вобастагиҳо (Dependency Injection, DI) дар Go метавонад бо чанд роҳ амалӣ карда шавад, бо дарназардошти хусусиятҳои забон:
- Тарзи гузаронидани вобастагиҳо тавассути параметрҳои функсияҳо ё конструкторҳо — роҳи маъмул ва соддатар. Вобастагиҳо ба таври равшан ҳангоми эҷоди объект ё даъвати функсия гузаронида мешаванд.
type Service struct {
repo Repository
}
func NewService(r Repository) *Service {
return &Service{repo: r}
}
-
Истифодаи интерфейсҳо — имкон медиҳад, ки ба осонӣ иҷрои вобастагиҳоро барои тест ё васеъкунӣ иваз кардан мумкин аст.
-
Пакетҳо барои DI — китобхонаҳои тарафи сеюм (масалан, Uber Fx, Google Wire) кӯмак мекунанд, ки воридкунии автоматии вобастагиҳоро осон кунанд, аммо истифодаи онҳо ҳатмӣ нест.
-
Вариаблҳои глобалӣ ё singleton — усули камтар дӯстдошта бо сабаби мушкилоти тестпазирӣ ва нигоҳдорӣ.
Дар Go, одатан, афзалият дода мешавад ба воридкунии равшан тавассути параметрҳо, ки ин хонданавзании ва соддаии кодро зиёд мекунад.