Junior — Middle
Pouvez-vous partager votre expérience dans la mise en œuvre du concept d'Inversion de Contrôle dans des projets?
sobes.tech IA
Réponse de l'IA
La mise en œuvre du Contrôle d'Inversion (IoC) en Go est généralement réalisée en passant des dépendances dans les constructeurs ou les fonctions, plutôt que via des frameworks, comme dans d'autres langages. Par exemple, au lieu de créer des dépendances à l'intérieur de la structure, on les passe de l'extérieur, ce qui facilite les tests et augmente la flexibilité.
Exemple :
// Interface pour le logger
type Logger interface {
Log(message string)
}
// Implémentation du logger
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Service dépendant de Logger
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Travail effectué")
}
// Utilisation
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Cette approche permet de changer facilement les implémentations des dépendances et facilite les tests unitaires.