迭代器模式(十六)

一、定义

    提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。


二、角色

1. Iterator 抽象迭代器

    抽象迭代器负责定义访问和遍历元素的接口,而且基本上是有固定的3个方法:first() 获得第一个元素,next() 访问下一个元素,isDone() 是否已经访问到底部(Java 叫做 hasNext() 方法)。

public interface Iterator<E> {
    // 是否已经遍历到尾部
    boolean hasNext();
    // 遍历到下一个元素
    E next();
    // 删除当前指向的元素
    void remove();
}

2. Collection 集合

    提供创建具体迭代器角色的接口,在 Java 中是 iterator() 方法。

public interface Collection<E> extends Iterable<E> {
    // 容器大小
    int size();
    // 是否为空
    boolean isEmpty();
    // 是否包含某个元素
    boolean contains(Object o);
    // 返回迭代器
    Iterator<E> iterator();
    // 添加一个元素
    boolean add(E e);
    // 移除一个元素
    boolean remove(Object o);
}
  • 注意:
    开发系统时,迭代器的删除方法应该完成两个逻辑:一是删除当前元素,二是当前游标指向下一个元素。


三、应用

    迭代器现在应用得越来越广泛了,甚至已经成为一个最基础的工具,它已经融入到各个语言和工具中了。
    基本现在所有的高级语言都有类似  Iterator 这个接口或者实现,Java 已经把迭代器给我们准备好了,我们再去写迭代器,就有点多余了。所以呀,这个迭代器模式也有点没落了,基本上很少有项目再独立写迭代器了,直接使用  Collection 下的实现类就可以完美地解决问题。


查看更多:设计模式分类以及六大设计原则

猜你喜欢

转载自blog.csdn.net/afei__/article/details/80713620
今日推荐