迭代器模式

简介: 迭代器模式

iterator模式



需求:给大家举个例子,现在假设,有一个教室类,里面包含了一堆学生,我现在要遍历教室里的学生,怎么来玩儿

public interface Aggregate {
    public abstract Iterator iterator(); 
}
public interface Iterator {
    public abstract boolean hasNext();
    public abstract Object next();
}
public class Student {
    private String name;
    public Student (String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}
public class Classroom implements Aggregate {
    private Student[] students;
    private int last = 0;
    public Classroom(int size) {
        this.students = new Student[size];
    }
    public Student getStudents(int size) {
        return students[size];
    }
    public void addStudent(Student student) {
        this.students[last] = student;
        last++;
    }
    public int getLength() {
        return last;
    }
    @Override
    public Iterator iterator() {
        return new ClassroomIterator(this);
    }
}
public class ClassroomIterator implements Iterator {
    private Classroom classroom;
    private int index;
    public ClassroomIterator(Classroom classroom) {
        this.classroom = classroom;
        this.index = 0;
    }
    @Override
    public boolean hasNext() {
        if (index < classroom.getLength()) {
            return true;
        } else {
            return false;
        }
    }
    @Override
    public Object next() {
        Student student=classroom.getStudents(index);
        index++;
        return student;
    }
}
public class Main {
    public static void main(String[] args) {
        Classroom classroom = new Classroom(2);
        classroom.addStudent(new Student("小李"));
        classroom.addStudent(new Student("王三"));
        Iterator iterator = classroom.iterator();
        while (iterator.hasNext()){
            System.out.println(((Student)iterator.next()).getName());
        }
    }
}


面向Iterator接口编程,无论底层的数据结构和迭代算法如何变化,调用者都不用修改代码


高内聚,低耦合,漂亮


其实一般很少自己写这个iterator模式的,一般都是在集合编程中使用,尤其是如果要对集合元素遍历过程中做插入删除操作,那就用iterator,体验JDK已经封装好的iterator模式,加深印象,如果要对某个类中的集合进行遍历,由那个集合类返回一个iterator回来,我们统一面向iterator迭代器接口来编程遍历,提高系统整体的可维护性,可扩展性

如果自己写iterator模式,一般是研发底层的框架,比如提供某个数据给外部遍历,那么可以使用iterator模式自己封装迭代器,以后阶段如果有机会,我们也会去实践


相关文章
|
2月前
|
设计模式 Java
Java设计模式之迭代器模式详解
Java设计模式之迭代器模式详解
|
3月前
|
设计模式 Java 数据挖掘
聊聊Java设计模式-迭代器模式
迭代器(Iterator)模式,也叫做游标(Cursor)模式。我们知道,在Java 容器中,为了提高容器遍历的方便性,我们利用迭代器把遍历逻辑从不同类型的集合类中抽取出来,从而避免向外部暴露集合容器的内部结构。
52 0
聊聊Java设计模式-迭代器模式
|
3月前
|
设计模式 uml C++
行为型 迭代器模式
行为型 迭代器模式
31 0
|
10月前
|
设计模式 存储 算法
设计模式~迭代器模式(Iterator)-20
迭代器模式(Iterator Pattern)是Java和.Net编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。迭代器模式已经被淘汰,java中已经把迭代器运用到各个聚集类(collection)中了,使用java自带的迭代器就已经满足我们的需求了 目录 迭代器模式(Iterator) (1)优点 (2)缺点 (3)使用场景 (4)注意事项 (5)应用实例: 代码
47 0
|
设计模式 存储 Java
迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供了一种顺序访问聚合对象中每个元素的方法,而不暴露其内部实现。
79 1
|
容器
关于迭代器模式我所知道的
关于迭代器模式我所知道的
45 0
|
设计模式 Java 索引
Java设计模式-迭代器模式(Iterator)
Java设计模式-迭代器模式(Iterator)
|
JavaScript 前端开发
简单理解迭代器模式
这几天研究了一下迭代器模式,期间有一段时间经常搞不太懂一些概念与概念之间的关系,今天来整理一下。
113 0
|
设计模式 存储 容器
我学会了,迭代器模式
迭代器模式属于行为型模式,这个类型的设计模式总结出了 类、对象之间的经典交互方式,将类、对象的行为和使用解耦了,花式的去使用对象的行为来完成特定场景下的功能。
90 0
我学会了,迭代器模式
|
设计模式 算法 Java
Java设计模式 ->迭代器模式
Java设计模式 ->迭代器模式
78 0