十七、迭代器模式 Iterator
2017-03-29 17:33
190 查看
一、定义
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴漏该对象的内部表示。二、结构图
三、代码示例
import java.util.ArrayList; import java.util.List; /** * @use 测试迭代器模式 * @author lattice * */ public class IteratorItest { public static void main(String[] args) { ConcreteAggregate a=new ConcreteAggregate(); a.pushItem("大鸟"); a.pushItem("小菜"); a.pushItem("小明"); a.pushItem("老外"); a.pushItem("格子"); Iterator i=new ConcreteIteractor(a); Object item=i.First(); while(!i.isDone()){ System.out.println(i.CurrentItem()+"请买票。"); i.Next(); } } } /** * 迭代器抽象类 * @author lattice * */ abstract class Iterator{ public abstract Object First(); public abstract Object Next(); public abstract boolean isDone(); public abstract Object CurrentItem(); } /** * 聚合抽象类 * @author lattice * */ abstract class Aggregate{ public abstract Iterator createIterator(); } /** * 具体迭代器,继承Iterator * @author lattice * */ class ConcreteIteractor extends Iterator{ private ConcreteAggregate aggregate; int currentItem=0; public ConcreteIteractor(ConcreteAggregate aggregate){ this.aggregate = aggregate; } @Override public Object First() { return aggregate.getItem(0); } @Override public Object Next() { Object ret=null; currentItem++; if(currentItem<aggregate.getCount()){ ret=aggregate.getItem(currentItem); } return ret; } @Override public boolean isDone() { return currentItem>=aggregate.getCount()?true:false; } @Override public Object CurrentItem() { return aggregate.getItem(currentItem); } } /** * 具体聚集类,继承Aggregate * @author lattice * */ class ConcreteAggregate extends Aggregate{ private List<Object> item=new ArrayList<Object>(); @Override public Iterator createIterator() { return new ConcreteIteractor(this); } public int getCount(){ return item.size(); } public void pushItem(Object obj){ this.item.add(obj); } public void setItem(int index,Object obj){ this.item.remove(index); this.item.add(index, obj); } public Object getItem(int index){ return item.get(index); } }
相关文章推荐
- 设计模式入门之迭代器模式Iterator
- .NET设计模式(18):迭代器模式(Iterator Pattern)
- 设计模式之迭代器模式(Iterator Pattern)
- .NET设计模式(18):迭代器模式(Iterator Pattern)
- 设计模式(一)-迭代器模式(Iterator Pattern)——一个一个遍历
- 设计模式(一)之迭代器模式Iterator
- java设计模式-迭代器模式(Iterator)
- 18.设计模式_行为模式_迭代器模式_Iterator
- 迭代器模式(Iterator)
- c++设计模式:迭代器模式(Iterator Pattern)
- Php设计模式之【迭代器模式Iterator Pattern】
- JAVA设计模式六--Iterator(迭代器模式)
- 迭代器模式(Iterator)
- C++设计模式-Iterator迭代器模式
- 设计模式:迭代器模式(Iterator Pattern)
- (十七)迭代器模式详解(foreach的精髓)
- iterator 迭代器模式
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
- [C++设计模式] iterator 迭代器模式
- 迭代器模式 | Iterator Pattern