设计模式16-迭代器模式

定义

这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。

实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public interface Iterator{
public boolean hasNext();
public Object next();
}

public interface Container{
public Iterator getIterator();
}

public class NameRespository implements Container{
public String[] names = {"a","b","c"};

@Override
public Iterator getIterator(){
return new NameIterator();
}

private class NameIterator implements Iterator{
int index;

@Override
public boolean hasNext(){
if(index < names.length){
return true;
}
return false;
}

@Override
public Object next(){
if(this.hasNext){
return names[index++];
}
return null;
}
}

}

优点

1、支持以不同的方式遍历一个聚合对象
2、迭代器简化了聚合类
3、在同一个聚合上可以有多个遍历
4、在迭代器模式中,增加新的聚合类和迭代器类都很方便,无需修改原有的代码

缺点

迭代器目的是分离集合的遍历行为,抽象出了一个迭代器来负责,但是每增加一个聚合类,想用迭代器都需要自己写一个迭代器,因此增加了系统的复杂性