迭代器模式
Posted xiaoliangup
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器模式相关的知识,希望对你有一定的参考价值。
迭代器模式介绍
提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。迭代器是可以从前往后,或者从后往前遍历的。为遍历不同聚集结构提供如:开始,下一个,是否有下一个,是否结束,当前哪一个等等的一个统一接口。
聚合对象:存储数据
迭代器:遍历数据
迭代器模式UML图
迭代器代码实现
迭代器接口
public interface Iterator { void First(); void next(); Boolean hasNext(); Boolean isFirst(); Boolean isLast(); Object currentItem(); }
聚合对象及迭代器实现类
import java.util.ArrayList; import java.util.List; public class ConcreateMyAggregate { private List<Object> lists=new ArrayList<Object>(); public ConcreateMyAggregate() { super(); // TODO Auto-generated constructor stub } public List<Object> getLists() { return lists; } public void setLists(List<Object> lists) { this.lists = lists; } public void addObject(Object obj){ lists.add(obj); } public void removeObject(Object obj){ lists.remove(obj); } public Iterator getIterator(){ return new MyIterator(); } private class MyIterator implements Iterator{ private int cursor; @Override public void First() { cursor=0; } @Override public void next() { if(hasNext() ){ cursor++; } } @Override public Boolean isFirst() { return cursor==0?true:false; } @Override public Boolean isLast() { // TODO Auto-generated method stub return cursor==lists.size()-1 ? true:false; } @Override public Object currentItem() { return lists.get(cursor); } @Override public Boolean hasNext() { return cursor<lists.size()?true:false; } }
测试类
public class Main { public static void main(String[] args) { ConcreateMyAggregate aggregate=new ConcreateMyAggregate(); aggregate.addObject("aa"); aggregate.addObject("bb"); aggregate.addObject("cc"); Iterator iterator = aggregate.getIterator(); while(iterator.hasNext()){ Object obj=iterator.currentItem(); System.out.println(obj); iterator.next(); } } }
以上是关于迭代器模式的主要内容,如果未能解决你的问题,请参考以下文章