Sobes.tech
Junior — Middle

Poți împărtăși experiența ta în implementarea conceptului de Inversiune a Controlului în proiecte?

sobes.tech AI

Răspuns de la AI

Implementarea Inversion of Control (IoC) în Go se realizează de obicei prin transmiterea dependențelor în constructori sau funcții, mai degrabă decât prin framework-uri, ca în alte limbaje. De exemplu, în loc să creăm dependențe în interiorul structurii, le transmitem din exterior, ceea ce facilitează testarea și crește flexibilitatea.

Exemplu:

// Interfață pentru logger
 type Logger interface {
    Log(message string)
}

// Implementarea logger-ului
 type ConsoleLogger struct {}

func (c *ConsoleLogger) Log(message string) {
    fmt.Println(message)
}

// Serviciu dependent de Logger
 type Service struct {
    logger Logger
}

func NewService(logger Logger) *Service {
    return &Service{logger: logger}
}

func (s *Service) DoWork() {
    s.logger.Log("Munca a fost finalizată")
}

// Utilizare
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()

Această abordare permite schimbarea ușoară a implementărilor dependențelor și simplifică testarea unitară.