Radio

一个小小程序员

0%

迭代器模式

迭代器模式

迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。java中的 iterator。

示例演示:
  1. 首先我们创建一个迭代器接口

    1
    2
    3
    4
    5
    6
    package test.iterator;

    public interface Iterator {
    public boolean hasNext();
    public Object next();
    }
  2. 然后创建一个获取迭代器的接口

    1
    2
    3
    4
    5
    package test.iterator;

    public interface Container {
    public Iterator getIterator();
    }
  3. 创建两个接口的实现类

    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
    package test.iterator;

    import java.util.List;

    public class People implements Container {
    public List<String> names;

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

    private class NameIterator implements Iterator {
    int index;

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

    @Override
    public Object next() {
    if (this.hasNext()) {
    return names.get(index++);
    }
    return null;
    }
    }
    }
  4. 完成上述步骤,我们就可以开始演示了

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    package test.iterator;

    import java.util.ArrayList;

    public class IteratorDemo {
    public static void main(String[] args) {
    People people = new People();
    people.names = new ArrayList<>();
    people.names.add("a");
    people.names.add("b");
    people.names.add("c");
    people.names.add("d");
    Iterator iter = people.getIterator();
    while (iter.hasNext()){
    System.out.println(iter.next());
    }
    }
    }

    演示结果:

    1
    2
    3
    4
    a
    b
    c
    d
说明:

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

缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。

欢迎关注我的其它发布渠道