全面分析iterator(迭代器)模式,以及具体java实例

先上一个iterator design pattern (迭代器模式)的类图。

Aggregat 是一个抽象的集合体,ConcreteAggregat是Aggregat的一种实现,iterator表示一个迭代器的通用接口。
在javaAPI中这个接口的定义为:
java.util
 

Java代码 复制代码  收藏代码
  1. interface Iterator<E>{   
  2.       boolean hasNext();   
  3.       E next();   
  4.       void remove();   
  5. }  
interface Iterator<E>{
      boolean hasNext();
      E next();
      void remove();
}



ConcreteIterator 是针对于ConcreteAggregate这个特定的集合体对Iterator的一个实现。
注意 ConcreteIterator和ConcreteAggregate的关系是关联,也就是ConcreteIterator中包含一个ConcreteAggregate的实例,而接口函数的实现(implement)正是基于这个实例。
反之 ConcreteAggregate和ConcreteIterator的关系是依赖,意思就是ConcreteAggregate的一些方法的实现一些功能的实现需要依赖于ConcreteIterator,在具体java语言中这一点体现在

class ConcreteAggregate implements Iterable<T> 需要实现一个 Iterator<T> iterator()方法。注意了iterator居然没有参数,那么它怎么得到ConcreteIterator的信息呢(一般的依赖关系,需要传递对象作为函数参数),答案就是 interClass(内部类)的方法

 

你可能感兴趣的:(java)