Jas*_*n S 8 java design-patterns iterable
因此,有Iterable
和Iterator
和List
.如果您尝试提供其他Java代码的接口,以便封装由"页面"返回结果的远程服务提供的功能,您会使用什么?
例如,考虑数据库或网页(例如flickr API).在第一次检索结果后,您知道结果的总数和前N个结果,但在检索其余结果之前,您不知道剩余的结果.
在您的情况下,假设每个元素的检索成本很高,那么获取聚合结果可能是有意义的,而不是在删除调用级别直接迭代每个元素.
您可以提供一个返回List的方法,如下所示:
List<YourClass> getResults(int offset, int maxResults)
Run Code Online (Sandbox Code Playgroud)
其中offset是您要开始的第一个元素的索引,maxresults是您希望在列表中拥有的最大元素数.然后,您可以迭代列表以显示在页面中.
Java Persistence API也遵循相同的模式,Query接口提供了3种执行上述操作的方法:
setFirstResult()
setMaxResults()
List getResultList()
Run Code Online (Sandbox Code Playgroud)
http://download.oracle.com/javaee/5/api/javax/persistence/Query.html
在我的应用程序中,我决定实现Iterator<ListPage>
,其中迭代器的实现next()
是下载下一页结果,并ListPage
具有返回真实列表和元数据(如结果总数、每页数、页数和总数)的方法。页面:
public interface ListPage<T> {
public List<T> getList();
public int getTotal();
public int getPage();
public int getPages();
public int getPerPage();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1016 次 |
最近记录: |