当你想在课堂上添加一些额外的信息时,你更喜欢哪种方式:你会扩展该类或围绕它做一个包装吗?
在我的特定场景中,我想添加一些从数据库中获取的List
的分页信息。分页信息包括:
int currentPage;
int totalResults;
int containedResultsIndex;
int totalcontainedResults;
以及几种方法:
Boolean isNextPageAvailable();
Boolean isPrevPageAvailable();
您的意见,延伸或包装?
答案 0 :(得分:8)
听起来你问你是否应该在你的情况下赞成继承或作文。我会说你没有创建List
的新实现,而你真的不关心如何实现List
,所以继承不适合你的问题。相反,您提供分页功能。我将使用List
或其他一些通用集合创建一个通常包装(封装)分页逻辑的类。
答案 1 :(得分:4)
List
并使您的类实现List
本身,将所有方法委派给原始列表(例如,在构造函数中传递)ArrayList
还是LinkedList
?答案 2 :(得分:3)
太多的延伸是邪恶的,并且会使你的代码难以阅读/理解与组合一起,只需创建一个具有Collection的新类以及分页所需的额外成员。
答案 3 :(得分:1)
我更愿意尽可能地包装。特别是在你的List
示例中 - 包装类可以包含任何列表类型,而扩展类与特定的具体超类相关联。
答案 4 :(得分:0)
即使扩展,也无法通过超类引用调用新方法。最好把它包起来。
答案 5 :(得分:0)
拥有优雅的PagingList(扩展List)是一种合适的方法。
为什么要委托你可以继承你需要的东西?
这就像FileReader和BufferedFileReader之间的关系(没有人会说这是不好的做法)。