设计模式之迭代器模式

来源:互联网 发布:软件接口的分类 编辑:程序博客网 时间:2024/06/05 04:02

主要就是实现开始,下一个,什么时候结束,当前哪一项.


package com.zwy;import java.util.ArrayList;import java.util.Collection;import java.util.List;/*提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露改对象的内部表示. * 注:当你要访问一个对象的聚集对象,而不管这些对象时什么时候都需要遍历的时候,你就应该考虑迭代器模式, * 主要就是为不同的聚集结构提供如开始,下一个,什么时候结束,当前哪一项等统一接口. * */public class IteratorTest {public static void main(String[] args) {concreteArray array = new concreteArray();array.add("zhang san");array.add("li si");Iterator iterator = array.create();while(!iterator.isDone()){System.out.println(iterator.CurrentItem());iterator.Next();}}}abstract interface Iterator {public abstract Object First();public abstract Object Next();public abstract boolean isDone();public abstract Object CurrentItem();}abstract class createIterator  {public abstract Iterator create();}class concreteArray extends createIterator {List<String> lists = new ArrayList<String>();@Overridepublic Iterator create() {return new myArray(lists);}public void add(String i) {lists.add(i);}}class myArray implements Iterator {List<?> list ;int cur = -1; public myArray(List<?> list){this.list = list;if(list.size() > 0){cur = 0;}}@Overridepublic Object First() {return list.get(0);}@Overridepublic Object Next() {if(cur < list.size())return list.get(cur++);return null;}@Overridepublic boolean isDone() {if(cur == list.size())return true;return false;}@Overridepublic Object CurrentItem() {if(cur < list.size())return list.get(cur);return null;}}


0 0
原创粉丝点击