Junior — Middle
Жоболордо Inversion of Control концепциясын ишке ашыру боюнча тажрыйбаңыз менен бөлүшө аласызбы?
sobes.tech AI
AIден жооп
Go тилинде Inversion of Control (IoC) көбүнчө көзкарандылыктарды куруучуларга же функцияларга өткөрүү аркылуу жеткирилет, башка тилдердегидей frameworkтер аркылуу эмес. Мисалы, структуранын ичинде көзкарандылыктарды түзүү ордуна, биз алардын сырттан өткөрүп жатабыз, бул тестирлөөнү жеңилдетет жана ийкемдүүлүктү арттырат.
Мисал:
// Логгер үчүн интерфейс
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()
Бул ыкма көзкарандылыктарды оңой алмаштырууга жана бирдиктүү тестирлөөнү жеңилдетүүгө мүмкүндүк берет.