设为首页 加入收藏

TOP

设计模式(十一):迭代器模式(二)
2017-10-13 10:41:50 】 浏览:3444
Tags:设计模式 十一 模式
e
{ return true; } } public Object next() { DepartmentVo departmentVo = departmentVos[position]; position = position + 1; return departmentVo; } //删除的方法我们暂时不实现 public void remove() { } }

   创建第二个学院(信息工程学院)及其迭代器

package com.jet.impl;

import com.jet.com.jet.vo.DepartmentVo;
import com.jet.someinterface.College;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Created by Administrator on 2016/11/14.
 * description:信息工程学院
 */
public class InfoEngineeringCollege implements College{
    List<DepartmentVo> departmentVoList;//注意这里我们使用了集合来放置专业对象了

    public String getName() {
        return "信息工程学院";
    }

    public InfoEngineeringCollege() {
        this.departmentVoList = new ArrayList<DepartmentVo>();
        addDepartment("电子信息工程","电子信息工程");
        addDepartment("信息工程","信息工程");
        addDepartment("通信工程","通信工程");
    }

    public void addDepartment(String name, String description) {
        DepartmentVo departmentVo = new DepartmentVo(name,description);
        departmentVoList.add(departmentVo);
    }

    public Iterator createIterator() {
        return new InfoEngineeringCollengIterator(departmentVoList);
    }
}

 

package com.jet.impl;

import com.jet.com.jet.vo.DepartmentVo;
import java.util.Iterator;
import java.util.List;

/**
 * Created by Administrator on 2016/11/14.
 * description:信息工程学院迭代器
 */
public class InfoEngineeringCollengIterator  implements Iterator{
    int index = 0;
    List<DepartmentVo> departmentVoList;

    public InfoEngineeringCollengIterator(List<DepartmentVo> departmentVoList) {
        this.departmentVoList = departmentVoList;
    }

    public boolean hasNext() {
        if(index >= departmentVoList.size() ){
            return false;
        }else {
            index = index + 1;
            return true;
        }

    }

    public Object next() {
        return departmentVoList.get(index);
    }

    public void remove() {

    }
} 

  创建数据输出类(也就是客户端)

package com.jet.impl;

import com.jet.com.jet.vo.DepartmentVo;
import com.jet.someinterface.College;
import java.util.Iterator;
import java.util.List;

/**
 * Created by Administrator on 2016/11/15.
 * description:模拟向页面输出院系信息的类,该类负责遍历每个专业并打印其信息
 */
public class OutputInfoImpl {
    //学院集合
    List<College> collegeList;

    public OutputInfoImpl(List<College> collegeList) {
        this.collegeList = collegeList;
    }

    public void printDepartement(){
        //java的集合实现了迭代器,可以直接调用方法取到
        Iterator departmentIterator = collegeList.iterator();
        while (departmentIterator.hasNext()){
            College college = (College) departmentIterator.next();
            System.out.println("--------" + college.getName() + "有以下专业-----------");
            printDepartment(college.createIterator());
        }
    }

    public void printDepartment(Iterator iterator){
        while (iterator.hasNext()){
            DepartmentVo departmentVo = (DepartmentVo) iterator.next();
            System.out.println(departmentVo.getName());
        }
    }

}

  测试迭代器

package com.jet.test;

import com.jet.impl.ComputerCollege;
import com.jet.impl.InfoEngineeringCollege;
import com.jet.impl.OutputInfoImpl;
import com.jet.someinterface.College;

import java.util.ArrayList;
import java.
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇如何一步一步用DDD设计一个电商网.. 下一篇数据库扩展性设计:使用二进制解..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目