快速理解迭代器模式

一、什么是迭代器模式
 提供一种方法顺序访问一个聚合对象中的各个元素,而又无需暴露该对象的内部实现,这样既可以做到不暴露集合内部的结构,又可以让外部代码透明地访问集合内部数据。
 像Java中List他有一个iterator方法,这个方法可以用来遍历List中的元素,这种就是一种迭代器模式
二、迭代器的模式结构

抽象容器角色:负责提供具体迭代器角色的接口,一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等。

具体容器角色:实现抽象容器的具体实现类,比如List接口的实现ArrayList等。

抽象迭代器角色:负责定义访问和遍历元素的接口。

具体迭代器角色:实现迭代器接口,并记录遍历中的当前位置。

三、迭代器模式的使用场景
  • 访问一个集合的内容而无需暴露它的内部表示。
  • 为遍历不同的集合提供一个统一的接口。
四、迭代器模式的具体实现

抽象聚合类

public interface Container {
    Iterator getIterator();
}

迭代器抽象类

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

具体聚合类具体迭代器角色

public class NameRepository implements Container {
    public String names[] = {"Robert", "John", "Julie", "Lora"};
    
    @Override
    public Iterator getIterator() {
        return new NameIterator();
    }
    private class NameIterator implements Iterator {
        int index = 0;
        
        @Override
        public boolean hasNext() {
            if (index < names.length) {
                return true;
            }
            return false;
        }

        @Override
        public Object next() {
            if (hasNext()) {
                return names[index++];
            }
            return null;
        }
    }
}

测试代码

    public static void main(String[] args) {
        NameRepository nameRepository = new NameRepository();
        Iterator iterator = nameRepository.getIterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }
    }
五、迭代器模式的优缺点

优点

  1. 简化了遍历方式,比如对一些没有序列的数据结构,如:TreeSet。
  2. 提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进行遍历了。
  3. 封装性好,用户只需要得到迭代器就可以遍历,不用关心遍历算法。

缺点

  1. 对于简单的遍历,使用迭代器方式比较繁琐,比如ArrayList。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值