设计模式练习(14)——迭代器模式

时间:2023-01-07 19:46:08

迭代器模式

一、题目:

某教务管理信息系统中,一个班级(class)包含多个学生(Stedent),使用java内置迭代器实现对学生数据的双向遍历,要求按学生年龄由大到小的次序输出学生信息,现使用迭代器模式设计系统。
(1)绘制迭代器模式结构视图
(2)给出实例类图并实现代码。

二、所用模式结构视图:

设计模式练习(14)——迭代器模式

三、实例类图:

设计模式练习(14)——迭代器模式

四、实例实现代码:

(因为区分,所以在类的前面加了Gj19)

学生类:

package gjIteratorPattern;

public class Gj19Student implements Comparable<Gj19Student>{
private String name;
private int age;
public Gj19Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int compareTo(Gj19Student stu){
if(this.age > stu.age){
return -1;
}else if(this.age < stu.age){
return 1;
}
return 0;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}

Java内置迭代器

package gjIteratorPattern;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;

public class Gj19JavaIterator {
List<Gj19Student> slist=null;
public Gj19JavaIterator(){
Gj19Student[] stu=new Gj19Student[5];
slist=new ArrayList<Gj19Student>();
stu[0]=new Gj19Student("张三", 32);
stu[1]=new Gj19Student("李四", 25);
stu[2]=new Gj19Student("王五", 21);
stu[3]=new Gj19Student("赵六", 38);
stu[4]=new Gj19Student("周七", 26);
for(int i=0;i<5;i++){
slist.add(stu[i]);
}
}
public void display(){
Iterator<Gj19Student> t=slist.iterator();
System.out.println("遍历获得的原始数据:");
while(t.hasNext()){
Gj19Student student=t.next();
System.out.println("姓名:"+student.getName()+"今年"+student.getAge()+"岁");
}
Collections.sort(slist);
Iterator<Gj19Student> it=slist.iterator();
System.out.println("========================================");
System.out.println("按年龄从大到小排序:");
while(it.hasNext()){
Gj19Student student=it.next();
System.out.println("姓名:"+student.getName()+"今年"+student.getAge()+"岁");
}
}

}

迭代器模式客户端

package gjIteratorPattern;
/**
* 迭代器模式客户端
* @author gong
*
*/

public class Gj19Client {
public static void main(String[] args) {
Gj19JavaIterator gj19JavaIterator= new Gj19JavaIterator();
gj19JavaIterator.display();
}
}

五、运行结果:

设计模式练习(14)——迭代器模式