在现实生活和程序设计中,经常需要访问一个聚合对象中的每一个元素,比如《数据结构》中的链表遍历。通常的做法是把链表的创建和遍历结合起来放在同一个类中,但是这种方式不利于程序的扩展。如果要改变遍历方式,就必须修改程序源码,这就违反了“开闭原则”。既然在聚合类中封装遍历方法不可取,那么在聚合类中不提供遍历方法,用户自己实现遍历方法是否可行?答案也是不可取的,因为这种方法会有两个缺点:暴露Aggregate类的内部表示使其数据不安全;增加客户的负担。“迭代器模式”可以较好地克服上述缺点。它在客户端访问类和聚合类之间插入一个迭代器,将聚合对象与其遍历行为分开,对客户端隐藏其内部细节,满足“单一职责原则”和“开闭原则”,这样Java中的Collection、List、Set、Map等都包含迭代器。模式定义提供了一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是一种对象行为模式。迭代器模式是通过将聚合对象的遍历行为分离出来,抽象成一个迭代器类来实现的。其目的是允许外部代码透明地访问聚合的内部数据,而不暴露聚合对象的内部结构。解决问题的不同方法是遍历整个集成对象。模式组成步骤第一步:定义抽象迭代器角色。迭代器的作用是负责定义访问遍历元素的接口,一般包括三个方法,分别是访问下一个元素next()、元素是否已经到达底部hasNext()、删除当前指向的元素remove().interfaceIterator{Objectfirst();Objectnext();booleanhasNext();}第二步:定义具体的迭代器角色。classConcreteIteratorimplementsIterator{privateList