Junior — Middle
Môžete sa podeliť o svoje skúsenosti s implementáciou konceptu Inversion of Control v projektoch?
sobes.tech AI
Odpoveď od AI
Implementácia Inversion of Control (IoC) v jazyku Go sa zvyčajne dosahuje prostredníctvom odovzdávania závislostí do konštruktorov alebo funkcií, nie prostredníctvom rámcov, ako v iných jazykoch. Napríklad namiesto vytvárania závislostí vnútri štruktúry ich odovzdávame zvonku, čo uľahčuje testovanie a zvyšuje flexibilitu.
Príklad:
// Rozhranie pre logger
type Logger interface {
Log(message string)
}
// Implementácia loggeru
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Služba závislá od Loggeru
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Práca dokončená")
}
// Použitie
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Tento prístup umožňuje ľahko meniť implementácie závislostí a zjednodušuje jednotkové testovanie.