迭代器模式最大的作用就是遍历,根据自定义类的特定或者需求去遍历。
迭代器模式其实不难,最要是要明白内部类的使用。
下面我们来看下UML图:
上面的这个例子为了简化操作我们遍历数组
/** * Created by gao.mq on 2017/4/26. * 迭代接口 */ public interface Iterator { public boolean hasNext(); public Object next(); }
/** * Created by gao.mq on 2017/4/26. * 获得遍历接口 */ public interface Container { public Iterator iterator(); }
/** * Created by gao.mq on 2017/4/26. */ public class NameRepository implements Container { private String[] name=new String[]{"小高","小王","小红","小天","小地"}; //todo 暴露给外界使用获取遍历的方法 @Override public Iterator iterator() { return new NameIterator(); } //todo 内部实现自己的遍历方式 public class NameIterator implements Iterator{ int index=0; @Override public boolean hasNext() { if(index>name.length-1){ return false; } return true; } @Override public Object next() { if(this.hasNext()){ return name[index++]; } return null; } } }
下面来看下我们的测试:
public class IteratorDemo { public static void main(String[] args) { NameRepository nameRepository = new NameRepository(); Iterator iterator = nameRepository.iterator(); while (iterator.hasNext()){ System.out.println("姓名---"+ iterator.next()); } } }
姓名---小高
姓名---小王
姓名---小红
姓名---小天
姓名---小地
这样我们就可以把当前类中的元素给遍历出来。使用内部类去具体实现遍历,屏蔽了差异性。这样我们就可以使用共同的方法去遍历。