Junior — Middle
Μπορείτε να μοιραστείτε την εμπειρία σας στην υλοποίηση της έννοιας της Αντιστροφής Ελέγχου σε έργα;
sobes.tech AI
Απάντηση από AI
Η υλοποίηση του Inversion of Control (IoC) στο Go επιτυγχάνεται συνήθως μέσω της μεταβίβασης εξαρτήσεων στους κατασκευαστές ή τις συναρτήσεις, και όχι μέσω πλαισίων, όπως σε άλλες γλώσσες. Για παράδειγμα, αντί να δημιουργούμε εξαρτήσεις μέσα στη δομή, τις περνάμε από έξω, διευκολύνοντας τον έλεγχο και αυξάνοντας την ευελιξία.
Παράδειγμα:
// Διεπαφή για τον logger
type Logger interface {
Log(message string)
}
// Υλοποίηση του logger
type ConsoleLogger struct {}
func (c *ConsoleLogger) Log(message string) {
fmt.Println(message)
}
// Υπηρεσία που εξαρτάται από τον Logger
type Service struct {
logger Logger
}
func NewService(logger Logger) *Service {
return &Service{logger: logger}
}
func (s *Service) DoWork() {
s.logger.Log("Η εργασία ολοκληρώθηκε")
}
// Χρήση
logger := &ConsoleLogger{}
service := NewService(logger)
service.DoWork()
Αυτή η προσέγγιση επιτρέπει την εύκολη αλλαγή υλοποιήσεων εξαρτήσεων και απλοποιεί τις μονάδες δοκιμών.