一.定义
它提供一种方法访问一个容器对象中各个元素,而又不需要暴露该对象的内部细节。
二.类图
- Iterator抽象迭代器:负责定义访问和遍历元素的接口,而且基本有三个固定的方法:
- first() 获得第一个元素
- next() 访问下一个元素
- isDown() 是否已经访问到底部(Java叫做hasNext()方法)
- ConcreteIterator具体迭代器:实现迭代器接口,完成容器元素的遍历
- Aggregate抽象容器:容器角色负责提供创建具体迭代器角色接口,必然提供一个类似createIterator()这样的方法,JAVA中一般是iterator()方法。
- ConcreteAggregate具体容器:实现容器接口的定义的方法,创建出容纳迭代器的对象
三.注意事项
- 迭代器模式现在属于一个没落的模式,主要是因为现在所有的高级语言都有Iterator这个接口或实现,例如JAVA集合类Collection中常用的类都继承了Iterator接口,现在基本上没人会单独写一个迭代器。
- 开发系统时,迭代器的删除方法应该完成两个逻辑:一是删除当前元素,二是当前游标指向下一个元素。