大战设计模式【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
原文地址:https://www.cnblogs.com/linkstar/p/7747226.html