美文网首页
迭代器模式(在对象的集合中游走,但是不暴露集合的实现)

迭代器模式(在对象的集合中游走,但是不暴露集合的实现)

作者: 钉某人 | 来源:发表于2017-11-17 14:58 被阅读0次
源码地址 https://github.com/DingMouRen/DesignPattern
迭代器模式.png
  • Iterator迭代器接口负责定义、访问和遍历元素的接口
  • ConcreteIterator具体迭代器类主要实现迭代器接口,并记录遍历的当前位置
  • Aggregate容器接口负责提供创建具体具体迭代器角色的接口
  • ConcreteAggregate具体容器类与具体迭代器角色相关联
定义

迭代器模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露对象的内部表示。

使用场景

遍历一个容器对象。

协作

ConcreteIterator跟踪容器中的当前对象,并能够计算出待遍历的后继对象。

示例代码
//迭代器接口
public interface Iterator<T> {
    //是否有下一个元素
    boolean hasNext();
    //返回当前位置的元素,并将位置移到下一位
    T next();
}
//具体迭代器类
public class ConcreteIterator<T> implements Iterator<T> {
    private List<T> list = new ArrayList<>();
    private int cursor = 0;

    public ConcreteIterator(List<T> list) {
        this.list = list;
    }

    @Override
    public boolean hasNext() {
        return cursor != list.size();
    }

    @Override
    public T next() {
        T obj = null;
        if (this.hasNext()) obj = this.list.get(cursor++);
        return obj;
    }
}

//容器接口
public interface Aggregate<T> {
    //添加元素
    void add(T obj);
    //移除元素
    void remove(T obj);
    //获取迭代器对象
    Iterator<T> iterator();
}
//具体容器类
public class ConcreteAggregate<T> implements Aggregate<T> {
    private List<T> list = new ArrayList<>();
    @Override
    public void add(T obj) {
        list.add(obj);
    }

    @Override
    public void remove(T obj) {
        list.remove(obj);
    }

    @Override
    public Iterator<T> iterator() {
        return new ConcreteIterator<T>(list);
    }
}
总结

遵循单一原则,弱化容器类与遍历算法之间的关系。在客户端与容器类之间添加一个迭代器类,可以不暴露容器类内部的实现,而得到容器类的元素。

相关文章

  • 迭代器模式(在对象的集合中游走,但是不暴露集合的实现)

    Iterator迭代器接口负责定义、访问和遍历元素的接口 ConcreteIterator具体迭代器类主要实现迭代...

  • 迭代器设计模式

    迭代器设计模式的作用是:提供一种方法去访问集合对象中的元素,但是又不对外暴露底层的结构和实现细节。使得遍历集合元素...

  • 设计模式之迭代器模式

    迭代器模式(Iterator)用于在数据集合中按照顺序遍历集合,在遍历的同时不需要暴露对象的内部表示,根据不同的需...

  • 编程中的设计模式之迭代器模式

    定义 迭代器模式(Iterator Pattern)用于顺序访问集合对象的元素,而不暴露该对象的内部表示。 代码示...

  • Iterator和Iterable的区别

    回顾迭代器模式 java提供了很多集合类,而迭代器模式就是提供一种方法,顺序访问聚集的对象。而又不暴露该集合的内部...

  • 迭代器模式

    一. 什么是迭代器模式 迭代器模式: 用来遍历集合对象 (集合在这里也叫做容器) 迭代器模式, 将对集合的遍历操作...

  • 设计模式——迭代器模式

    什么是迭代器模式 用迭代器来封装集合对象的遍历细节,使调用者能够通过统一的接口来实现对集合的遍历。 迭代器也给集合...

  • [Python-设计模式] 行为模式- 迭代器模式

    迭代器模式 迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式 (列表、 栈和树等) 的情况下遍历集合...

  • ES的迭代器Iterator和生成器Generator

    一、简介 1.1 集合对象迭代器 迭代器是一种常用的设计模式,人们常用它来遍历集合对象。在ES6中,有Array、...

  • 迭代器模式的使用

    一、模式介绍 迭代器模式为我们提供一种按照顺序访问集合容器中对象元素的方法,而无需暴露集合内部细节表示。无论是什么...

网友评论

      本文标题:迭代器模式(在对象的集合中游走,但是不暴露集合的实现)

      本文链接:https://www.haomeiwen.com/subject/nqjjvxtx.html