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