Senior
Czy lepiej definiować interfejs w miejscu implementacji czy w miejscu użycia?
sobes.tech AI
Odpowiedź od AI
W Go le interfejsy lepiej definiować w miejscu ich użycia, a nie w miejscu implementacji. Pozwala to tworzyć minimalne interfejsy, które opisują tylko te metody, które są naprawdę potrzebne konsumentowi.
Takie podejście zwiększa elastyczność i upraszcza testowanie, ponieważ implementacja nie musi znać wszystkich interfejsów, a tylko te, które jej są potrzebne.
Przykład:
// W miejscu użycia
type Reader interface {
Read(p []byte) (n int, err error)
}
func Process(r Reader) {
// używa tylko metody Read
}
// W miejscu implementacji
type File struct {}
func (f *File) Read(p []byte) (int, error) {
// implementacja
}
W ten sposób interfejs jest definiowany na podstawie potrzeb klienta, a nie implementacji.