设计模式13-迭代器模式
定义
Iterator Pattern:它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。
场景
-
当需要遍历一个聚合对象,但不希望暴露其内部结构时(如隐藏列表的实现细节)。
-
当需要为同一聚合对象提供多种不同的遍历方式时(如正向遍历、反向遍历)。
-
当需要统一不同聚合对象的遍历接口时(如让列表、树、图等不同结构支持相同的遍历操作)。
Java场景
-
所有集合类(
List
、Set
、Map
等)都实现了Iterable
接口,通过iterator()
方法返回迭代器。 -
Iterator
接口定义了hasNext()
、next()
等方法,负责具体的遍历逻辑。
代码
import java.util.ArrayList;import java.util.List;public class Iterator {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("A");list.add("B");//迭代器模式java.util.Iterator<String> iterator = list.iterator();while(iterator.hasNext()){String next = iterator.next();System.out.println(next);}//集合中的迭代器模式//当代码执行到 for (String element : list) 时,编译器会调用 list(它必须是 Iterable 的实现)的 .iterator() 方法,来获取一个迭代器实例。//然后,这个迭代器被用来循环调用 hasNext() 和 next() 方法,直到遍历结束。for (String element : list) {System.out.println(element);}}
}
迭代器模式代码