Ten tytuł jest trochę trudny ... Kiedy piszę interfejs, czy ogólnie najlepszą metodą jest zwrócenie najbardziej konkretnego interfejsu, czy może najmniejszego?Dobra praktyka OO dotycząca zwracania mniej/bardziej specyficznego interfejsu podczas zwracania interfejsu
Na przykład, załóżmy
interface List2<T> extends List<T>
{
List<T> getRange(int startIndex, int endIndex);
}
Byłoby lepiej, aby zmienić
interface List2<T> extends List<T>
{
List2<T> getRange(int startIndex, int endIndex);
}
tak aby dzwoniący mogą wywołać getRange
na ich wynik, a jednocześnie dopasowując Lista polimorficznie?
Zwrócenie najbardziej konkretnego typu daje największą widownię. Każdy, kto chce IEnumerable, może zużywać ILista, ale nie na odwrót, więc nie rozumiem, dlaczego chciałbym później rozszerzyć typ zwrotu. – mayu