这个标题有点棘手......当我编写一个界面时,通常最好的做法是尽可能地返回最具体的界面,或者至少?
例如,假设
interface List2<T> extends List<T>
{
List<T> getRange(int startIndex, int endIndex);
}
Run Code Online (Sandbox Code Playgroud)
改变它会更好吗?
interface List2<T> extends List<T>
{
List2<T> getRange(int startIndex, int endIndex);
}
Run Code Online (Sandbox Code Playgroud)
这样调用者可以调用getRange他们的结果,同时仍然以多态方式匹配List?
如果代码变化很大(通常仍在开发中),我将返回最具体的接口,并在进一步需要时使其更广泛。这样,您就可以鼓励不要太频繁地使用该界面,并且如果您稍后决定删除或从根本上更改该界面,则更容易更改内容。
如果代码是稳定的,或者是要发布的 API 的一部分,我将返回最广泛的接口,以使其可供最大的受众使用。