Junior — Middle
Kas saaksite jagada oma kogemust Inversion of Control kontseptsiooni rakendamisel projektides?
sobes.tech AI
Vastus AI-lt
Inversion of Control (IoC) implementatsioon Go keeles saavutatakse tavaliselt sõltuvuste edastamisega konstruktoritele või funktsioonidele, mitte raamistikudega nagu teistes keeltes. Näiteks, selle asemel, et luua sõltuvusi struktuuri sees, edastame need väljastpoolt, mis lihtsustab testimist ja suurendab paindlikkust.
Näide:
// Logi liides
type Logger interface {
Log(message string)
}
// Logi rakendus
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Teenus, mis sõltub Loggerist
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Töö on tehtud")
}
// Kasutus
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
See lähenemine võimaldab hõlpsasti muuta sõltuvuste rakendusi ja lihtsustab üksustestide kirjutamist.