首页 > 代码库 > 设计模式之迭代器模式
设计模式之迭代器模式
定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
结构图:
示例代码:
public interface Iterator { public Object First(); public Object Next(); public boolean isDone(); public Object currentItem(); } public class ConcreteIterator implements Iterator{ private ConcreteAggregate aggregate; private int current = 0; public ConcreteIterator(ConcreteAggregate aggregate) { this.aggregate = aggregate; } @Override public Object First() { // TODO Auto-generated method stub return aggregate.get(0); } @Override public Object Next() { // TODO Auto-generated method stubg Object ret = null; current ++; if (current < aggregate.count()) { ret = aggregate.get(current); } return ret; } @Override public boolean isDone() { // TODO Auto-generated method stub return current >= aggregate.count()? true : false; } @Override public Object currentItem() { // TODO Auto-generated method stub return aggregate.get(current); } } public abstract class Aggregate { public abstract Iterator createIterator(); } public class ConcreteAggregate extends Aggregate { private List<Object> items = new ArrayList<Object>(); @Override public Iterator createIterator() { // TODO Auto-generated method stub return new ConcreteIterator(this); } public int count() { return items.size(); } public Object get(int index) { return items.get(index); } public void add(Object obj) { items.add(obj); } }客户端代码如下:
public class Client { public static void main(String[] args) { ConcreteAggregate a = new ConcreteAggregate(); a.add("123"); a.add("菜鸟"); a.add("阿里"); Iterator i = new ConcreteIterator(a); Object item = i.First(); while (!i.isDone()) { System.out.println(i.currentItem()); i.Next(); } } }
运行结果:
123
菜鸟
阿里
设计模式之迭代器模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。