Junior — Middle
Loyihalarda Inversion of Control konseptini joriy qilish bo'yicha tajribangizni bo'lishishingiz mumkinmi?
sobes.tech AI
AIdan javob
Go'da Inversion of Control (IoC) niyatida odatda, odatda, konstruktorlar yoki funksiyalar orqali bog'liqliklarni uzatish orqali erishiladi, boshqa tillardagi kabi frameworklar orqali emas. Masalan, tuzilma ichida bog'liqliklarni yaratish o'rniga, ularni tashqaridan uzatamiz, bu esa test qilishni osonlashtiradi va moslashuvchanlikni oshiradi.
Misol:
// Log uchun interfeys
type Logger interface {
Log(message string)
}
// Logni amalga oshirish
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Loggerga bog'liq xizmat
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Ish bajarildi")
}
// Foydalanish
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Bu yondashuv bog'liqliklarni osonlik bilan o'zgartirish va birlik testlarini soddalashtirish imkonini beradi.