迭代器模式(Iterator)

1

定义

  迭代器模式(Iterator):属于行为型模式,可以让使用者在不暴露集合底层表现形式的情况下,遍历集合中的所有元素。

代码实战

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
39
40
41
42
43
44
45
46
47
48
49
50
interface MyIterator<T> {
boolean hasNext();

T next();
}

class MyArray<E> {
Object[] array;

int size = 0;

MyArray(int size) {
array = new Object[size];
}

void add(E e) {
array[size++] = e;
}

MyIterator<E> iterator() {
return new MyArrayIterator();
}

class MyArrayIterator implements MyIterator<E> {
private int idx = 0;

@Override
public boolean hasNext() {
return idx < size;
}

@Override
public E next() {
return hasNext() ? (E) array[idx++] : null;
}
}
}

class Test {
public static void main(String[] args) {
MyArray<Integer> array = new MyArray<>(100);
array.add(1);
array.add(3);
array.add(6);
MyIterator<Integer> iterator = array.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}

类图

1

特点

  迭代器模式的特点是,创建一个迭代器接口,其中包含hasNext方法和next方法。hasNext方法用于判断是否遍历结束,next方法是返回下一个元素。

  使用者自定义一个集合类,并定义一个迭代器接口的实现类,在这个next方法中按照某个特定顺序遍历元素。集合类提供一个iterator方法,用于获取迭代器对象。

总结

  迭代器模式遇到的场景非常多,但是使用场景比较少,主要是在各种语言的集合库中,往往都提供了使用迭代器访问集合的方法。

-------------本文结束感谢您的阅读-------------
0%