迭代器模式(十六)

一、定义

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


二、角色

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 下的实现类就可以完美地解决问题。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值