大战设计模式【12】—— 迭代器模式
迭代器模式(Iterator)
设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample
一、定义
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
二、结构
Iterator(抽象迭代器):定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法。
ConcreteIterator(具体迭代器):它实现了抽象迭代器接口,完成对聚合对象的遍历。
Aggregate(抽象聚合类):用于存储和管理元素对象,声明一个CreateIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。
ConcreteAggregate(具体聚合类):实现了在抽象聚合类中声明的CreateIterator()方法,返回一个对应的具体迭代器ConcreteIterator实例。
三、优点
支持以不同方式遍历一个聚合对象,在同一个聚合对象上可以定义多种便利方式。
增加新的聚合类和迭代器类都很方便,无须修改原有代码,符合开闭原则。
四、缺点
增加新的聚合类需要对应增加新的迭代器类
五、应用场景
访问一个聚合对象的内容而无须暴露它的内部表示。
需要为一个聚合对象提供多种遍历方式。
六、个人总结
1、如果你已经了解java中的迭代器,那么迭代器设计模式应该很容易理解,简单的说,java利用这样的设计模式设计出了它的迭代器
对于我们熟知的那些集合都可以使用迭代器去遍历
2、例子中我们自己创建了迭代器的接口,这是我们学习所需要了解内部机制所用的
在实际中我们通常使用java.util.Iterator
参考博客:http://www.cnblogs.com/edisonchou/p/7442138.html