Java迭代器模式

来源:互联网 发布:如何用微信付款淘宝 编辑:程序博客网 时间:2024/05/18 18:21

迭代器模式是Java.Net编程环境中非常常用的设计模式。此模式用于以顺序方式访问集合对象的元素,而不需要知道其底层表示。

迭代器模式属于行为模式类别。

实现实例

在这个实例中,将创建一个Iterator接口,它陈述了一个导航方法和一个Container接口,以及返回迭代器。 实现Container接口的具体类将负责实现Iterator接口并使用它。

IteratorPatternDemo这是一个演示类,将使用一个具体的实现类-NamesRepository,打印一个存储在NamesRepository集合中的Names

迭代器模式的实现实例结构如下图中所示 -

第1步

创建两个简单的接口,如下代码所示 -
Iterator.java

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

Container.java

public interface Container {   public Iterator getIterator();}
Java

第2步

创建实现Container接口的具体类。 这个类有一个内部类NameIterator,它实现了Iterator接口。
NameRepository.java

public class NameRepository implements Container {   public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};   @Override   public Iterator getIterator() {      return new NameIterator();   }   private class NameIterator implements Iterator {      int index;      @Override      public boolean hasNext() {         if(index < names.length){            return true;         }         return false;      }      @Override      public Object next() {         if(this.hasNext()){            return names[index++];         }         return null;      }           }}
Java

第3步

使用NameRepository获取迭代器并打印其名称。
IteratorPatternDemo.java

public class IteratorPatternDemo {   public static void main(String[] args) {      NameRepository namesRepository = new NameRepository();      for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){         String name = (String)iter.next();         System.out.println("Name : " + name);      }        }}
Java

第4步

验证输出,执行上面的代码得到以下结果 -

Name : RobertName : JohnName : JulieName : Lora