迭代器模式常见于 Java 的集合类,使用该模式顺序访问集合对象的元素,不需要知道集合对象的底层表示。

1 上代码

 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
// 一个迭代器接口
public interface Iterator {
    boolean hasNext();
    Object next();
}

// 一个容器接口
public interface Container {
    Iterator getIterator();
}

// 在弄一个容器用来遍历
public class StringList implements Container {
    public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};

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

    private class StringIterator 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;
        }
    }
}

// 测试一下遍历效果
public class Main {
    public static void main(String[] args) {
        StringList stringList = new StringList();
        for (Iterator iter = stringList.getIterator(); iter.hasNext(); ) {
            String name = (String) iter.next();
            System.out.println("Name: " + name);
        }
    }
}

用了这么久迭代器,原来这是一个设计模式。

参考资料

  1. 迭代器模式