您的位置:首页 > 其它

迭代子模式

2016-03-23 17:02 316 查看
迭代器模式就是顺序访问聚集中的对象,这个思路和我们常用的一模一样,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);
}

}


——贴上自己喜欢的代码!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: