设计模式 迭代器模式
本文将介绍设计模式中的迭代器模式。
一、什么是迭代器模式?
迭代器模式又被称为游标模式,通过引入迭代器,将数据的遍历功能从聚合对象中分离出来,聚合对象只负责存储数据,迭代器负责遍历数据,简化了聚合对象的设计,更符合单一职责原则的要求。
二、实现
1. 结构
2. 角色
- Iterator 抽象迭代器:
- 声明了访问和遍历元素的方法
- ConcreteIterator 具体迭代器:
- 实现了访问和遍历元素的方法
- Aggregate 抽象聚合类:
- 声明了一个
createUterator()
方法,用于创建一个迭代器对象
- 声明了一个
- ConcreteAggregate 具体聚合类
3. 简单示例
Iterator:
1 |
|
ConcreteIterator:
1 |
|
Aggregate:
1 |
|
ConcreteAggregate:
1 |
|
三、实例内部类实现迭代器
关于实例内部类,具体请看:
在传统的迭代器实现中,为了能够在迭代器中访问聚合对象,还需要在迭代器中维护聚合对象的引用。
实例内部类属于外部类实例,可以直接访问外部类的实例属性及方法,因此可以通过实例内部类实现迭代器。
1 |
|
四、Java 内置迭代器
具体请看:
五、优缺点
1. 优点
- 迭代器简化了聚合类的实现
- 由于引入抽象层,增加新的聚合类和迭代器类都更方便,无需修改原有代码
2. 缺点
- 类的数量会增加,导致系统复杂性增加
参考
- 《Java 设计模式》