设计模式 迭代器模式


基本概念

案例


定义迭代器接口和具体实现类

public interface StudentIterator {
    public boolean hasNext();
    public Student next();
}
public class StudentIteratorImpl implements StudentIterator{
    private List list;
    private int position = 0;

    public StudentIteratorImpl(List list) {
        this.list = list;
    }

    @Override
    public boolean hasNext() {
        return position < list.size();
    }

    @Override
    public Student next() {
        Student currentStudent = list.get(position);
        position++;
        return currentStudent;
    }
}

定义容器接口和具体实现类

public interface StudentAggregate {
    public void addStudent(Student student);

    public void removeStudent(Student student);

    StudentIterator getStudentIterator();
}
public class StudentAggregateImpl implements StudentAggregate{

    private List list = new ArrayList<>();

    @Override
    public void addStudent(Student student) {
        this.list.add(student);
    }

    @Override
    public void removeStudent(Student student) {
        this.list.remove(student);
    }

    @Override
    public StudentIterator getStudentIterator() {
        return new StudentIteratorImpl(list);
    }
}

总结