美文网首页
迭代器模式-interator

迭代器模式-interator

作者: HeJD | 来源:发表于2018-04-19 15:32 被阅读0次

提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部结构

这里写图片描述
主要分成2部分:aggregate-容器,内有增加删除容器内容等方法,还有一个生成迭代器的方法;iterator-迭代器,实际上就是一个指针,内有移动指针以及返回当前元素等方法

迭代器模式的优点:

简化了遍历方式,对于对象集合的遍历,还是比较麻烦的,对于数组或者有序列表,我们尚可以通过游标来取得,但用户需要在对集合了解很清楚的前提下,自行遍历对象,但是对于hash表来说,用户遍历起来就比较麻烦了。而引入了迭代器方法后,用户用起来就简单的多了。

可以提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进行遍历了。

封装性良好,用户只需要得到迭代器就可以遍历,而对于遍历算法则不用去关心。

迭代器模式的缺点:

对于比较简单的遍历(像数组或者有序列表),使用迭代器方式遍历较为繁琐,大家可能都有感觉,像ArrayList,我们宁可愿意使用for循环和get方法来遍历集合。 

代码

Main

public class Main {

    public static void main(String[] args) {
        Aggregate ag=new ConcreteAggregate();
        ag.add("he");
        ag.add("jingdong");
        
        Iterator it=ag.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }

}

interface:Aggregate

public interface Aggregate {
    public void add(Object o);
    public void remove(Object o);
    public Iterator iterator();
}

interface:Iterator

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

imp:ConcreteAggregate

public class ConcreteAggregate implements Aggregate {

    private ArrayList<Object> list=new ArrayList<Object>();
    @Override
    public void add(Object o) {
        this.list.add(o);
    }

    @Override
    public void remove(Object o) {
        this.list.remove(o);
    }

    @Override
    public Iterator iterator() {
        return new ConcreteIterator(this.list);
    }

}

imp:ConcreteIterator

public class ConcreteIterator implements Iterator {
    
    private ArrayList<Object> list=new ArrayList<Object>();
    private int cursor=0;
    
    public ConcreteIterator(ArrayList<Object> list){
        this.list=list;
    }

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

    @Override
    public boolean hasNext() {
        if(this.cursor==this.list.size())
            return false;
        return true;
    }

}

相关文章

  • 迭代器模式-interator

    提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部结构 迭代器模式的优点: 迭代器模式的缺点:...

  • Interator 迭代器模式

    设计原则学习笔记 设计模式学习笔记 作用 针对数据集合,提供一种(若干)忽略集合内部细节以及访问细节的访问方式,...

  • Interator迭代器

    什么是同步迭代器呢? 举个例子: 这里的 iterator 就是同步迭代器了,每调用一次 next 方法,就返回一...

  • java设计模式-迭代器模式(Interator)

    迭代器模式,属于行为型模式,提供一种方法顺序访问聚合对象的各个元素,而不暴漏该对象的内部表示。 这句话理解起来很容...

  • 常用的集合

    集合的由来 集合框架接口特性 集合中的算法Interator (迭代器) 和Colletions 算法类,也ut...

  • 设计模式(17) 迭代器模式

    迭代器模式 基于IEnumerable的实现 使用场景 迭代器模式的优缺点 迭代器模式 迭代器模式用于顺序访问集合...

  • 第5章 -行为型模式-迭代器模式

    一、迭代器模式的简介 二、迭代器模式的优缺点 三、迭代器模式的实例

  • 行为型模式:迭代器模式

    LieBrother原文:行为型模式:迭代器模式 十一大行为型模式之六:迭代器模式。 简介 姓名 :迭代器模式 英...

  • Iterator模式

    迭代器模式(Iterator模式) 定义: 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 ...

  • 迭代器模式

    一、迭代器模式介绍 二、迭代器模式代码实例

网友评论

      本文标题:迭代器模式-interator

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