迭代器模式就是顺序访问聚集中的对象,这个思路和我们常用的一模一样,MyCollection中定义了集合的一些操作,MyIterator中定义了一系列迭代操作。聚合对象,类似于手写集合。
/**
*
* @author: muyichun
* @date : 2016年3月23日16:47:03
* @function: 迭代子模式
*/
public class Main{
public static void main(String[] args) {
Collection collection = new MyCollection();
Iterator it = collection.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
//集合的两个接口
interface Collection{
public Iterator iterator();
//取得集合元素
public Object get(int i);
//取得集合大小
public int size();
}
interface Iterator{
//前移
public Object previous();
//后移
public Object next();
public boolean hasNext();
//取得第一个元素
public Object first();
}
//两个实现:
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;
}
}
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;
return false;
}
@Override
public Object first() {
pos = 0;
return collection.get(pos);
}
}
——贴上自己喜欢的代码!