您的位置:首页 > 编程语言 > Java开发

java迭代器模式

2015-08-24 09:07 288 查看


模式定义

提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。


UML类图




例:

interface Iterator{
Object First();
Object Next();
boolean IsDone();
Object CurrentItem();
}

abstract class Aggregate{
abstract Iterator CreateIterator();
}

class ConcreteIterator implements Iterator{
private List<Object> list = new ArrayList<Object>();
private int curr=0;
public ConcreteIterator(List<Object> list){
this.list = list;
}

public Object First(){
return list.get(0);
}

public Object Next(){
Object ret = null;
curr++;
if(curr < list.size()){
ret = list.get(curr);
}
return ret;
}

public boolean IsDone(){
return curr>=list.size()?true:false;
}

public Object CurrentItem(){
return list.get(curr);
}
}

class ConcreteAggregate extends Aggregate{
private List<Object> list = new ArrayList<Object>();
public ConcreteAggregate(List<Object> list){
this.list = list;
}
public Iterator CreateIterator(){
return new ConcreteIterator(list);
}
}

class client{
public static void main(String[] args){
List<Object> list = new ArrayList<Object>();
list.add("miner");
list.add("any");
Aggregate agg = new ConcreteAggregate(list);
Iterator iterator = agg.CreateIterator();
iterator.First();
while(!iterator.IsDone()){
System.out.println(iterator.CurrentItem());
iterator.Next();
}
}
}



模式总结

1、迭代器模式提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示。

2、将遍历聚合对象中数据的行为提取出来,封装到一个迭代器中,通过专门的迭代器来遍历聚合对象的内部数据,这就是迭代器模式的本质。迭代器模式是“单一职责原则”的完美体现。

3、当使用迭代器的时候,我们依赖聚合提供遍历。

4、迭代器提供了一个通用的接口,让我们遍历聚合的项,放我们编码使用聚合项时,就可以使用多态机制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: