我们在之前的项目中实现了StudentCenter类;该类提供了getAllCourses()方法,用于读取所有的课程信息。该方法的原型如下所示。
public Course[] getAllCourses();
在本项目中,我们将使用迭代器模式改进这个接口。在改进后,该接口应返回一个java.util.Iterator<Course>对象,分离外部的使用场景和内部实现。
在获取Iterator对象之后,可以使用该Iterator对象遍历所有的Course对象。
public Iterator<Course> getCourseIterator();
因此,我们需要在com.littlewaterdrop.util包中新建一个类CourseIterator,并实现了Iterator<Course>接口。其原型如下所示。
package com.littlewaterdrop.util;
import java.util.Iterator;
import com.littlewaterdrop.bean.Course;
public class CourseIterator implements Iterator<Course> {
// ...
}
在CourseIterator类中需要实现Iterator<Course>接口的hasNext()和next()方法。在实现之后,我们可以按照如下方式使用getCourseIterator()方法,遍历所有的课程信息。
import java.util.Iterator;
import com.littlewaterdrop.registration.StudentCenter;
import com.littlewaterdrop.bean.Course;
public class Project {
public static void main(String[] args) {
Iterator<Course> allCourses = StudentCenter.getInstance().getCourseIterator();
while (allCourses.hasNext()) {
System.out.println(allCourses.next());
}
}
}