按照统一的方法遍历集合中的元素。
示例
将书(Book)放置到书架(BookShelf)中,并将书的名字按顺序显示出来。
类图
Aggregate接口
1 | public interface Aggregate { |
Iterator接口
1 | public interface Iterator { |
Book类
1 | public class Book { |
BookShelf类
1 | public class BookShelf implements Aggregate { |
BookShelfIterator类
1 | public class BookShelfIterator implements Iterator { |
Main类
1 | public class Main { |
运行结果
1 | Around the World in 80 Days |
登场角色
Iterator(迭代器)
该角色负责定义按顺序逐个遍历元素的接口(API)。在示例程序中,由Iterator接口扮演这个角色,它定义了hasNext和next两个方法。其中,hasNext方法用于判断是否存在下一个元素,next方法则用于获取该元素。
ConcreteIterator(具体的迭代器)
该角色负责实现Iterator角色所定义的接口(API)。在示例程序中,由BookShelfIterator类扮演这个角色。该角色中包含了遍历集合所必需的信息。在示例程序中,BookShelf类的实例保存在bookShelf字段中,被指向的书的下标保存在index字段中。
Aggregate(集合)
该角色负责定义创建Iterator角色的接口(API)。这个接口(API)是一个方法,会创建出“按顺序访问保存在我内部元素的人”。在示例程序中,由Aggregate接口扮演这个角色,它里面定义了iterator方法。
ConcreteAggregate(具体的集合)
该角色负责实现Aggregate角色所定义的接口(API)。它会创建出具体的Iterator角色,即ConcreteIterator角色。在示例程序中,由BookShelf类扮演这个角色,它实现了iterator方法。