/**
* 遥控器,充当具体迭代器
*/
public class RemoteControl implements AbstractIterator {
private List
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
51
52
53
54
55
56
//抽象聚合类
/**
* 抽象聚合类
*/
public abstract class AbstractObjectList {
private List
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
//具体聚合类
/**
* 电视机,充当具体聚合类
*/
public class Television extends AbstractObjectList{
public Television(List objects) {
super(objects);
}
@Override
public AbstractIterator createIterator() {
return new RemoteControl(this);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//客户端
public class Client {
public static void main(String[] args) {
/**
* 案例需求描述:
* 电视机遥控器是一个迭代器的现实应用,通过它可以实现对电视机频道集合的遍历操作,
* 电视机可以看成一个存储频道的聚合对象。
* 使用迭代器模式模拟电视机遥控器的实现。
*/
//电视机频道
List channels = new ArrayList<>();
channels.add("CCTV-1");
channels.add("CCTV-2");
channels.add("上海卫视");
channels.add("东方卫视");
channels.add("湖南卫视");
channels.add("浙江卫视");
//电视机
Television tv = new Television(channels);
//遥控器
AbstractIterator iterator = tv.createIterator();
//获取第一个频道
System.out.println(iterator.getFistItem());
//获取最后一个频道
System.out.println(iterator.getLastItem());
//下一个频道
System.out.println(iterator.next());
System.out.println(iterator.next());
System.out.println(iterator.next());
//上一个频道
System.out.println(iterator.previous());
System.out.println(iterator.previous());
System.out.println(iterator.previous());
}
}