一、核心思想
迭代子模式又称Cursor模式,是对象的行为模式。迭代子模式可以顺序地访问聚集中的对象而不必显露聚集的内部对象。
包含:聚集对象 和 迭代器对象。
关系图:
代码:
两个接口:
- public interface Collection {
- public Iterator iterator();
- /*取得集合元素*/
- public Object get(int i);
- /*取得集合大小*/
- public int size();
- }
- public interface Iterator {
- //前移
- public Object previous();
- //后移
- public Object next();
- public boolean hasNext();
- //取得第一个元素
- public Object first();
- }
两个实现:
- public class MyCollection implements Collection {
- public String string[] = {"A","B","C","D","E"};
- @Override
- public Iterator iterator() {
- return new MyIterator(this);
- }
- @Override
- public Object get(int i) {
- return string[i];
- }
- @Override
- public int size() {
- return string.length;
- }
- }
- public class MyIterator implements Iterator {
- private Collection collection;
- private int pos = -1;
- public MyIterator(Collection collection){
- this.collection = collection;
- }
- @Override
- public Object previous() {
- if(pos > 0){
- pos--;
- }
- return collection.get(pos);
- }
- @Override
- public Object next() {
- if(pos<collection.size()-1){
- pos++;
- }
- return collection.get(pos);
- }
- @Override
- public boolean hasNext() {
- if(pos<collection.size()-1){
- return true;
- }else{
- return false;
- }
- }
- @Override
- public Object first() {
- pos = 0;
- return collection.get(pos);
- }
- }
测试类:
- public class Test {
- public static void main(String[] args) {
- Collection collection = new MyCollection();
- Iterator it = collection.iterator();
- while(it.hasNext()){
- System.out.println(it.next());
- }
- }
- }
二、何时使用
迭代子的作用就是用来方便查询一个集合中的数据。
优点:
简化了聚集的界面
因为每一个聚集对象可以有多个迭代子对象,每个迭代子状态时独立的。
由于遍历算法被封装在迭代子角色里,因此迭代的算法可以独立于聚集对象。
三、java中的应用
Java集合类迭代子Iterator 和 Enumeration
JDBC查询数据集迭代子ResultSet
JSP分页