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

迭代器模式

一、题目:

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

二、所用模式结构视图:

设计模式练习(14)——迭代器模式_第1张图片

三、实例类图:

设计模式练习(14)——迭代器模式_第2张图片

四、实例实现代码:

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

学生类:

package gjIteratorPattern;

public class Gj19Student implements Comparable{
    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 slist=null;
    public Gj19JavaIterator(){
        Gj19Student[] stu=new Gj19Student[5];
        slist=new ArrayList();
        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 t=slist.iterator();
        System.out.println("遍历获得的原始数据:");
        while(t.hasNext()){
            Gj19Student student=t.next();
            System.out.println("姓名:"+student.getName()+"今年"+student.getAge()+"岁");
        }
        Collections.sort(slist);
        Iterator 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)——迭代器模式_第3张图片

你可能感兴趣的:(设计模式)