Mis on peamine erine Dependency Inversion ja Dependency Injection vahel?
sobes.tech AI
Vastus AI-lt
Sõltuvuste pööramise põhimõte (Dependency Inversion) on üks SOLID põhimõtetest, mis ütleb, et kõrgetasemelised moodulid ei tohiks sõltuda madalatasemelistest moodulitest, mõlemad peaksid sõltuma abstraktsioonidest. Abstraktsioonid ei tohiks sõltuda üksikdetailidest, üksikud detailid peaksid sõltuma abstraktsioonidest.
Sõltuvuste sisestamine (Dependency Injection) on konkreetne muster või tehnika, mis rakendab sõltuvuste pööramise põhimõtet. See on viis, kuidas väljastpoolt edastada sõltuvused (objektid) klassile või funktsioonile, mitte neid sisemiselt luua.
Teisisõnu:
- Sõltuvuste pööramine on kontseptsioon või disainiprintsiip.
- Sõltuvuste sisestamine on selle kontseptsiooni rakendamise viis, kui sõltuvused edastatakse väljastpoolt.
Näide Go keeles:
// Abstraktsioon
type Notifier interface {
Notify(message string)
}
// Konkreetne rakendus
type EmailNotifier struct {}
func (e EmailNotifier) Notify(message string) {
fmt.Println("E-kirja saatmine sõnumiga:", message)
}
// Kõrgema taseme moodul
type UserService struct {
notifier Notifier // sõltub abstraktsioonist
}
// Sõltuvuste sisestamine konstruktoriga
func NewUserService(n Notifier) *UserService {
return &UserService{notifier: n}
}
func (s *UserService) RegisterUser(name string) {
// registreerimislogika
s.notifier.Notify("Kasutaja registreeritud: " + name)
}
Siin on sõltuvuste pööramise põhimõte täidetud sõltuvusega Notifier liidesest, ning sõltuvuste sisestamine toimub, edastades konkreetse EmailNotifier'i UserService konstruktorile.