建设银行e路通网站,wordpress用户注册插件汉化,国外优秀个人网站欣赏,单页网站建设哪个品牌好简介
迭代器设计模式#xff08;Iterator Design Pattern#xff09;#xff0c;也叫作游标设计模式#xff08;Cursor Design Pattern#xff09;。
迭代器模式将集合对象的遍历操作从集合类中拆分出来#xff0c;放到迭代器类中#xff0c;让两者的职责更加单一。
…简介
迭代器设计模式Iterator Design Pattern也叫作游标设计模式Cursor Design Pattern。
迭代器模式将集合对象的遍历操作从集合类中拆分出来放到迭代器类中让两者的职责更加单一。
其定义是提供一种方法来访问聚合对象而不暴露这个对象的内部实现。
典型实现
首先定义一个用于遍历聚合对象中所存储元素的抽象迭代器接口其代码示例如下 public interface Iterator {// 将游标指向第一个元素public void first();// 将游标指向下一个元素public void next();// 判断是否存在下一个元素public boolean hasNext();// 获取游标指向的当前元素public Object currentItem();}
然后我们通常将存储数据的类称作为聚合类一般会在聚合类中创建迭代器对象如下是抽象聚合接口的代码示例 public interface Aggregate {public Iterator creteIterator();}
在具体迭代器类中我们需要注入聚合对象以便后续使用迭代器时能访问到其数据其代码示例如下 public class ConcreteIterator implements Iterator {private Aggregate objects;private Object cursor;public ConcreteIterator(Aggregate objects) {this.objects objects;}// 将游标指向第一个元素public void first() {}// 将游标指向下一个元素public void next() {}// 判断是否存在下一个元素public boolean hasNext() {}// 获取游标指向的当前元素public Object currentItem() {}}
在具体聚合类中通常是实现存储数据的逻辑以及指定具体迭代器的对象其代码示例如下 public class ConcreteAggregate implements Aggregate {public Iterator creteIterator() {return new ConcreteIterator(this);}}
总结
优点
迭代器模式的主要优点如下
封装性良好访问一个聚合对象的内容而无需暴露它的内部实现将遍历操作交给迭代器简化了复杂聚合类的设计支持以不同的方式遍历聚合对象在同一个聚合对象上可以定义多种遍历方式增加新的聚合类和迭代器类都很方便满足开闭原则
缺点
迭代器模式的主要缺点如下
迭代器模式将存储数据和遍历数据的职责分离增加新的聚合类需要对应增加新的迭代器类类的个数成对增加抽象迭代器的设计难度较大需要充分考虑系统将来的扩展
适用场景
迭代器模式的适用场景如下
访问一个聚合对象的内容而无需暴露它的内部实现需要为一个聚合对象提供多种遍历方式为遍历不同的聚合对象提供一个统一的接口
源码
在 Java 中迭代器的应用非常广。
最顶层的 Collection 集合接口继承了 Iterable 接口其实表明了所有的集合对象都是可迭代对象并且都需要实现获取 Iterator 对象的方法。
将这个源码映射到典型实现中Iterable 接口和 Collection 接口就是抽象聚合接口Iterator 接口则是抽象迭代器接口。