Senior
Sollte die Schnittstelle am Implementierungsort oder am Ort der Verwendung definiert werden?
sobes.tech KI
Antwort von AI
In Go ist es besser, Schnittstellen dort zu definieren, wo sie verwendet werden, nicht dort, wo sie implementiert werden. Dies ermöglicht die Erstellung minimaler Schnittstellen, die nur die Methoden beschreiben, die der Verbraucher tatsächlich benötigt.
Dieser Ansatz erhöht die Flexibilität und vereinfacht das Testen, da die Implementierung nicht alle Schnittstellen kennen muss, nur die, die sie benötigt.
Beispiel:
// Am Ort der Verwendung
type Reader interface {
Read(p []byte) (n int, err error)
}
func Process(r Reader) {
// verwendet nur die Read-Methode
}
// Am Ort der Implementierung
type File struct {}
func (f *File) Read(p []byte) (int, error) {
// Implementierung
}
Auf diese Weise wird die Schnittstelle basierend auf den Bedürfnissen des Kunden definiert, nicht auf der Implementierung.