核心思想
迭代子模式,又称Cursor模式。
可以顺序地访问聚集中的对象而不必显露聚集的内部表象。
它的作用是访问一个聚集,因此包含两类对象:
聚集对象:聚集对象中提供了一系列的数据集合,它还需要提供访问该集合中元素的方法,一共迭代器对象使用。
集合接口:
public interface Collection {
public Iterator iterator();
public Object get(int i);
public int size();
}
集合类:
public class MyCollection implements Collection{
String str[]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","P","S","T","U","V","W","X","Y","Z"};
@Override
public Iterator iterator() {
return new MyIterator(this);
}
@Override
public Object get(int i) {
// TODO Auto-generated method stub
return str[i];
}
@Override
public int size() {
// TODO Auto-generated method stub
return str.length;
}
}
迭代器对象:提供了迭代器对象的功能。
迭代子接口:
public interface Iterator {
public Object previous();
public Object next();
public boolean hasNext();
public Object first();
public boolean isFirst();
public Object last();
public boolean isLsat();
}
迭代子:
迭代器对象:提供了迭代器对象的功能。
public class MyIterator implements Iterator{
Collection collection;
private int pos=-1;
public MyIterator(Collection collection) {
super();
this.collection = collection;
}
@Override
public Object previous() {
// TODO Auto-generated method stub
if(pos>0) pos--;
return collection.get(pos);
}
@Override
public Object next() {
// TODO Auto-generated method stub
if(pos<collection.size()-1){
pos++;
}
return collection.get(pos) ;
}
@Override
public boolean hasNext() {
// TODO Auto-generated method stub
if(pos<collection.size()-1) return true;
else return false;
}
@Override
public Object first() {
// TODO Auto-generated method stub
pos=0;
return collection.get(pos);
}
@Override
public boolean isFirst() {
// TODO Auto-generated method stub
if(pos==0) return true;
else return false;
}
@Override
public Object last() {
// TODO Auto-generated method stub
pos=collection.size()-1;
return collection.get(pos);
}
@Override
public boolean isLsat() {
// TODO Auto-generated method stub
if(pos==collection.size()-1) return true;
else return false;
}
}
测试类:
迭代器对象:提供了迭代器对象的功能。
public class Test {
public static void main(String[] args) {
Collection collection=new MyCollection();
Iterator iterator=collection.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
}
}
迭代子的作用就是用来方便地查询一个集合的数据。凡是有数据聚集的地方都可以使用迭代子模式来进行数据迭代。
但是,迭代子模式给客户端一个聚集被顺序化的感觉,而且它给出的聚集元素没有类型特征。
(个人)
聚集对象和和迭代对象之间,聚集对象调用迭代对象,并且为迭代对象提供访问的函数。迭代对象调用聚集对象,并且为聚集对象提供错做聚集对象的函数。这通过在本类中定义对方的一个对象进行操作。