Sobes.tech
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()

Αυτή η προσέγγιση επιτρέπει την εύκολη αλλαγή υλοποιήσεων εξαρτήσεων και απλοποιεί τις μονάδες δοκιμών.