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