赞
踩
提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部实现。(Java中使用最多的设计模式之一)
简单实现集合中的迭代器功能
public interface Iterator { /** * 是否有下个元素 * * @return */ boolean hasNext(); /** * 当前元素 * * @return */ Object next(); /** * 删除元素 * * @param obj */ void remove(Object obj); }
public class ListIterator implements Iterator { private List list; /** * 索引 */ private int index = 0; public ListIterator(List list) { this.list = list; } @Override public boolean hasNext() { return index != list.size(); } @Override public Object next() { Object obj = null; if (hasNext()) { obj = list.get(index); index++; } return obj; } @Override public void remove(Object obj) { list.remove(obj); } }
public interface ICollection { /** * 添加元素 * * @param obj */ void add(Object obj); /** * 删除元素 * * @param obj */ void remove(Object obj); /** * 迭代元素 * * @return */ Iterator iterator(); }
public class ListCollection implements ICollection { private List list = new ArrayList(); @Override public void add(Object obj) { list.add(obj); } @Override public void remove(Object obj) { list.remove(obj); } @Override public Iterator iterator() { return new ListIterator(list); } }
3.运行
public class Main { public static void main(String[] args) { ListCollection listCollection = new ListCollection(); listCollection.add("aaaaaa"); listCollection.add("bbbbbb"); listCollection.add("cccccc"); listCollection.add("dddddd"); // 创建迭代器 Iterator iterator = listCollection.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } } }
优点
缺点
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。