第20章 想走?可以!先买票——迭代器模式
概念
顺序访问聚合对象中的各个元素,又不暴露对象内部表示。由于非常常用,已经并入很多高级语言中,目前不常出现了。
注意:迭代方式不止从前到后一种。
实现
元素:
- Aggregate : 抽象聚合类, 包含创建迭代器的接口
- ConcreteAggregate : 具体聚合类, 包括具体的元素
- Iterator : 抽象迭代器类,包括 "next", "current", "first", "isdone" 之类的抽象方法。
- ConcreteIterator: 具体迭代器类,按照特定方式进行迭代,它里面会有一个指向 ConcreteAggregate对象的指针,便于迭代。
- Client: 创建聚合类、用聚合类创建返回迭代器、用迭代器依次访问聚合类对象。
实现类图
img客户端使用
img img作用
迭代器作用是分离了聚合对象的遍历行为,抽象出一个迭代器来负责,又不暴露内部结构让代码透明访问集合内部的数据。
否则,(从前到后、从后到前、从多到少等次序访问的时候,就要借助对象的各个属性来达到遍历的目的,仅仅是遍历这个简单的抽象行为"next, first, current", 却加入那么多对象内部的属性来使得遍历能够进行,这会让代码变得很复杂)
网友评论