迭代器模式 | Iterator Pattern

迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。

组成:
Iterator(迭代器):迭代器定义访问和遍历元素的接口
ConcreteIterator (具体迭代器):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置
Aggregate (聚合):聚合定义创建相应迭代器对象的接口
ConcreteAggregate (具体聚合):具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例

创建接口:

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

创建实现了 Aggregate 接口的实体类。该类有实现了 Iterator 接口的内部类 NameIterator

public class ConcreteAggregate implements Aggregate {
   public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};

   @Override
   public Iterator getIterator() {
      return new NameIterator();
   }

   private class NameIterator implements Iterator {

      int index = 0@Override
      public boolean hasNext() {
         if(index < names.length){
            return true;
         }
         return false;
      }

      @Override
      public Object next() {
         if(this.hasNext()){
            return names[index++];
         }
         return null;
      }     
   }
}

使用 Client 来获取迭代器,并打印名字。

public class Client {

   public static void main(String[] args) {
      ConcreteAggregate concreteAggregate = new ConcreteAggregate ();

      for(Iterator iter = concreteAggregate .getIterator(); iter.hasNext();){
         String name = (String)iter.next();
         System.out.println("Name : " + name);
      }     
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值