Oop 在返回接口时返回更少/更具体接口的OO最佳实践
这个标题有点棘手。。。 当我编写一个接口时,通常最好的做法是返回最具体的接口,或者至少返回一个接口 例如,假设Oop 在返回接口时返回更少/更具体接口的OO最佳实践,oop,Oop,这个标题有点棘手。。。 当我编写一个接口时,通常最好的做法是返回最具体的接口,或者至少返回一个接口 例如,假设 interface List2<T> extends List<T> { List<T> getRange(int startIndex, int endIndex); } 接口列表2扩展列表 { 列出getRange(intstartindex、intendindex); } 换成这样会更好吗 interface List2<T&
interface List2<T> extends List<T>
{
List<T> getRange(int startIndex, int endIndex);
}
接口列表2扩展列表
{
列出getRange(intstartindex、intendindex);
}
换成这样会更好吗
interface List2<T> extends List<T>
{
List2<T> getRange(int startIndex, int endIndex);
}
接口列表2扩展列表
{
列表2 getRange(intstartindex、intendindex);
}
这样调用者就可以对结果调用
getRange
,同时仍然以多态方式匹配列表?如果代码变化很大(通常在开发过程中),我会返回最具体的接口,并在需要时使其更广泛。通过这种方式,您鼓励不要经常使用接口,并且如果您决定以后删除或彻底更改接口,则更容易进行更改
如果代码是稳定的,或者是要发布的API的一部分,我会返回最广泛的接口,以使其可供最大的受众使用。返回最具体的类型会给您带来最大的受众。任何想要IEnumerable的人都可以使用IList,但反过来就不行了,所以我不明白为什么以后要扩展返回类型。