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ă.