Sobes.tech
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.