Junior — Middle
Vai jūs varat dalīties ar savu pieredzi Inversion of Control koncepcijas ieviešanā projektos?
sobes.tech AI
Atbilde no AI
Inversion of Control (IoC) realizācija Go parasti tiek panākta, nodošot atkarības konstruktoros vai funkcijās, nevis izmantojot ietvarus, kā citās valodās. Piemēram, vietā, lai izveidotu atkarības struktūras iekšpusē, mēs tās nododam ārpusē, kas atvieglo testēšanu un palielina elastību.
Piemērs:
// Žurnāla interfeiss
type Logger interface {
Log(message string)
}
// Žurnāla realizācija
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Pakalpojums, kas ir atkarīgs no Logger
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Darbs pabeigts")
}
// Lietošana
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Šī pieeja ļauj viegli mainīt atkarību realizācijas un vienkāršo vienību testēšanu.