这个头衔有点棘手...... 当我编写接口时,通常最好的做法是尽可能地返回最具体的接口,或者至少?
例如,假设
interface List2<T> extends List<T>
{
List<T> getRange(int startIndex, int endIndex);
}
将其更改为
会更好吗?interface List2<T> extends List<T>
{
List2<T> getRange(int startIndex, int endIndex);
}
这样调用者可以在结果上调用getRange
,同时仍然以多态方式匹配List?
答案 0 :(得分:2)
如果代码发生了很大变化(通常在开发过程中),我会返回最具体的界面,并在需要进一步需求时将其扩展。这样,您鼓励不经常使用界面,如果您决定稍后删除或彻底更改界面,则更容易更改。
如果代码是稳定的,或者是要发布的API的一部分,我会返回最广泛的界面,以使其可供最大的受众使用。