设计模式 迭代器模式

  • 设计模式 - 迭代器模式

    迭代器模式迭代器模式是Java和.Net编程环境中非常常用的设计模式。此模式用于获得一种以顺序方式访问集合对象的元素的方式,而无需了解其基础表示形式。迭代器模式属于行为模式类别。
  • 实例

    我们将创建一个讲述导航方法的Iterator接口和一个重新运行Iterator的Container接口。实现Container接口的具体类将负责实现Iterator接口并使用它,我们的演示类IteratorPatternDemo将使用NamesRepository,一个具体的类实现打印的名称存储为一个集合NamesRepository。
    dp
    第1步 - 创建接口。Iterator.java, Container.java
    
    public interface Iterator {
       public boolean hasNext();
       public Object next();
    }
    
    
    public interface Container {
       public Iterator getIterator();
    }
    
    第2步 - 创建实现Container接口的具体类。此类具有实现Iterator接口的内部类NameIterator。 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;
          }         
       }
    }
    
    第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);
          }         
       }
    }
    
    步骤4 - 验证输出。
    
    Name : Robert
    Name : John
    Name : Julie
    Name : Lora