我正在处理以下问题:
迭代器设计模式具有很强的封装性。举个例子;图书馆需要一个图书管理系统。一个用于
book
的类存储它们的详细信息,一个用于library
的类存储图书和书架号。让我们假设库希望使用JDBC
将数据存储在数据库中。如何使用JDBC实现迭代器设计模式以确保数据的封装?
我关心的是如何处理数据库以及如何在应用程序中共享数据。
数据库处理程序可以是库类的内部类吗?那么是否有可能保存数据并根据请求检索数据而不影响封装?
我还在学习,还有很长的路要走,所以请温柔一点:)
这是一个关于使用Iterator模式访问数据库的近似示例。
package tk.ezequielantunez.stackoverflow.examples;
import java.util.Collection;
import java.util.Iterator;
/**
* Paged implementatios of a DAO. Iterator interface is used.
* Nottice you get pages of Collections, where resides your data.
* @author Ezequiel
*/
public class DAOIterator implements Iterator<Collection> {
int actualPage;
int pageSize;
public DAOIterator(int pageSize) {
this.actualPage = 0;
this.pageSize = pageSize;
}
/**
* Indicates if you have more pages of datga.
*/
@Override
public boolean hasNext() {
return actualPage < getTotalPages();
}
/**
* Gets the next page of data.
*/
@Override
public Collection next() {
return getPage(++actualPage);
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
/**
* Calculates total number of pages.
*/
private int getTotalPages() {
/* You could do a count of total results and divide them by pageSize */
throw new UnsupportedOperationException("Not supported yet.");
}
/**
* Get a page of results with X objects, where X is the pageSize used in
* constructor.
*/
private Collection getPage(int page) {
/* Get data from database here */
throw new UnsupportedOperationException("Not supported yet.");
}
}