设计模式之---迭代器模式

来源:互联网 发布:博客平台推荐 知乎 编辑:程序博客网 时间:2024/05/21 21:38

现在很多编程语言都通过发语法糖来支持这种模式了,比如Java的for-each,但我们对这个模式做个了解还是有必要的。

package iterator;public interface Iterator {      public Object next();      public boolean hasNext();  }  
package iterator;import java.util.ArrayList;import java.util.List;public class ConcreteIterator implements Iterator {private List list = new ArrayList();    private int cursor =0;          public ConcreteIterator(List list){          this.list = list;      }  @Overridepublic Object next() {// TODO Auto-generated method stubObject obj = null;          if(this.hasNext()){              obj = this.list.get(cursor++);        }          return obj;}@Overridepublic boolean hasNext() {// TODO Auto-generated method stubreturn list.size()==cursor?false:true;}}
package iterator;public interface Aggregate {public void add(Object obj);      public void remove(Object obj);      public Iterator iterator();}
package iterator;import java.util.ArrayList;import java.util.List;public class ConcreteAggregate implements Aggregate {private List list = new ArrayList();@Overridepublic void add(Object obj) {// TODO Auto-generated method stublist.add(obj);}@Overridepublic void remove(Object obj) {// TODO Auto-generated method stublist.remove(obj);}@Overridepublic Iterator iterator() {// TODO Auto-generated method stubreturn new ConcreteIterator(list);}}
package iterator;public class Client {public static void main(String[] args) {// TODO Auto-generated method stubAggregate ag = new ConcreteAggregate();          ag.add("小明");          ag.add("小红");          ag.add("小刚");          Iterator it = ag.iterator();          while(it.hasNext()){              String str = (String)it.next();              System.out.println(str);          } }}
迭代器模式的优缺点



1 0
原创粉丝点击