Junior — Middle
შეგიძლიათ გაგიზიაროთ თქვენი გამოცდილება Inversion of Control კონცეფციის განხორციელებაში პროექტებში?
sobes.tech AI
პასუხი AI-სგან
Go-ში Inversion of Control (IoC) ჩვეულებრივ აღწევს დამოკიდებულებების გადაცემით კონსტრუქტორებს ან ფუნქციებს, არა სხვა ენების მსგავსად ჩარჩოებით. მაგალითად, במקום შექმნათ დამოკიდებულებები სტრუქტურის შიგნით, ჩვენ გადავცემთ მათ გარედან, რაც ამარტივებს ტესტირებას და ზრდის მოქნილობას.
მაგალითი:
// ლოგერის ინტერფეისი
type Logger interface {
Log(message string)
}
// ლოგერის რეალიზაცია
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// სერვისი, რომელიც დამოკიდებულია Logger-ზე
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("სამუშაო დასრულდა")
}
// გამოყენება
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
ეს მიდგომა საშუალებას აძლევს მარტივად შეცვალოთ დამოკიდებულებების რეალიზაციები და გამარტივოს ერთეულების ტესტირება.