设计模式之迭代器模式

定义(百度百科):
      迭代器模式(Iterator Pattern)提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。

UML类图:

 

具体代码:

public abstract class Aggregate {
    abstract Iterator createIterator();
}

public class ConcreteAggregate extends Aggregate {
    @Override
    Iterator createIterator() {
        return new ConcreteIterator();
    }
}

public interface Iterator {
    public void first();
    public void next();
    public boolean hasNext();
    public Object currentItem();
}

public class ConcreteIterator implements Iterator {
    @Override
    public void first() {

    }

    @Override
    public void next() {

    }

    @Override
    public boolean hasNext() {
        return false;
    }

    @Override
    public Object currentItem() {
        return null;
    }
}

public class Client {
    public static void main(String[] args) {
        Aggregate aggregate = new ConcreteAggregate();
        aggregate.createIterator().first();
    }
}

模块说明:
Iterator:它定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法
ConcreteIterator:它实现了抽象迭代器接口,完成对聚合对象的遍历
Aggregate:它用于存储和管理元素对象,声明一个createIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色
ConcreteAggregate:它实现了在抽象聚合类中声明的createIterator()方法,该方法返回一个与该具体聚合类对应的具体迭代器ConcreteIterator实例

适用场景:
由于Java的类库都已经实现了迭代器模式,因此在实际开发中,
我们只需要直接使用已定义好的迭代器即可,迭代器已经成为我们操作聚合对象的基本工具之一

优缺点:
优点:
可以以不同的遍历方式遍历整个聚合
迭代器简化了聚合的接口

缺点:
抽象迭代器的设计难度较大,需要充分考虑到系统将来的扩展

总结:
控制访问聚合对象里的元素

posted @ 2017-08-22 16:35  重名  阅读(138)  评论(0编辑  收藏  举报