迭代器模式

来源:互联网 发布:stc89c52单片机驱动 编辑:程序博客网 时间:2024/06/07 09:25

作用:是对一个集合的遍历。

JDK,中Collection,的iterator遍历,就是该模式典型例子。

该模式(例举List),首先不会暴露内部结构(我们不知道list内部的结构),可以透明的访问,比如get(index)等。


迭代器角色:

public interface Iterator{     public boolean hasNext();     public Object next();}

具体迭代器角色:

public class concreteIterator implement Iterator{     private List list = null;     private int index;     public ConcreteIterator(List list){          super();          this.list = list;     }        public void hasNext(){          if(index>=list.getSize()){               return false;          }else{               return true;          }     }      public Object next(){          Object object = list.get(index);          index++;          return object;      }}


容器角色:

public interface List{     public void add(Object object);     public void get(int index);     public Iterator iterator();     public int getSize();}


具体容器角色:

public class ConcreteList implement List{     private Object[] list;     private int size=0;     private int index=0;          public ConcreteList(){          index = 0;          size = 0;          list = new Object[100];     }     public void add(Object obj){          list[index++] = obj;          size++;     }     public Object get(int index){          return list(index);     }     public int getSize(){          return size;     }     public Iterator iterator(){          return ConcreteIterator(this);     }}

上面就是list 迭代器的实现。

我们可以自定义迭代器,去以自己想要的方式去遍历。

缺点:就是比较繁琐。

我们一般写一个自己的集合,就需要提供相应的迭代器。

0 0