一、什么是迭代器模式
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示
二、使用场景
通用的方法遍历集合元素
三、模式构成
迭代器角色:定义遍历元素所需要的方法 具体迭代器角色:实现迭代器接口的方法
聚集类:Aggregate(抽象类)和ConcreteAggregate(具体聚集类)表示聚集类,是用来存储迭代器的数据。
在Aggregate(抽象类)中有一个CreateIterator方法,用来获取迭代器
四、举个例子
例子:jone与tony分别管理一家餐厅,两家餐厅宣布共同经营。jone负责早餐,tony负责午餐。两家只有一个服务员。 但是两家的菜单有所区别,jone的菜单用数组管理,tony用的是数组。这个服务员如何打印菜单更加方便。
分析:如果使用传统的方式,服务员打印菜单的时候,会先用一个for循环打印jone数组的菜单,然后用另一个循环打印tony链表的菜单,而且这两者输出内容的代码基本相同(造成代码冗余)。这时候,就可以使用迭代器,用一种通用的方式,既可以打印jone的菜单,又可以打印tony的菜单 。
代码:
//抽象迭代器interface Iterator { public boolean hasNext(); public Object next();}//具体迭代器class ArrayIterator implements Iterator{ private Object []items; private int index=0; private int max; public ArrayIterator(Object[] items,int max) { this.items = items; this.max=max; } @Override public boolean hasNext() { if (items.length!=0&&index五、补充0&&pos
java中,对于迭代器有自己的实现,像是list,set,map,collection都有实现好的迭代器。如果想要自己的集合使用迭代器,可以实现java中的Iterator接口。所以,我们不需要手工写一个Iterator接口
ps:渣渣菜鸟一个,如有不对,请指正~~~