一、概念
-官方的概念:用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。
二、场景
- 访问一个聚合对象的内容而无须暴露它的内部表示。
- 需要为聚合对象提供多种遍历方式。
- 为遍历不同的聚合结构提供一个统一的接口。
三、实现
- 条件
- Java
- 实现
- 内部类
package com.IteratorPattern; public class List implements IIterable { private static String[] Array = new String[]{"张三","李四","王五","赵六","钱七"}; @Override public IListIterator getIterator() { return new ListIterator(); } private class ListIterator implements IListIterator { private int index= 0; @Override public boolean HasNext() { if (index>= Array.length) { return false; } return true; } @Override public String Next () { if (HasNext()) return Array[index++]; return ""; } } }
- 接口类,IListIterator
package com.IteratorPattern; public interface IListIterator { String Next (); boolean HasNext(); }
- 接口类,IIterable
package com.IteratorPattern; public interface IIterable { IListIterator getIterator(); }
- 入口函数类,类名:Main
package com; import com.IteratorPattern.IListIterator; import com.IteratorPattern.List; public class Main { public static void main(String[] args) { List list = new List(); IListIterator listIterator = list.getIterator(); while(listIterator.HasNext()) { System.out.print("姓名:"+listIterator.Next()+"\n"); } } }
- 内部类
四、优缺点
- 优点
- 它支持以不同的方式遍历一个聚合对象。
- 迭代器简化了聚合类。
- 在同一个聚合上可以有多个遍历。
- 在迭代器模式中,增加新的聚合类和迭代器类都很方便,无须修改原有代码。
- 缺点
- 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。