迭代器模式---学习笔记

来源:互联网 发布:蒙自电视台网络直播 编辑:程序博客网 时间:2024/05/17 01:53

单一职责:对象应该只负责一项任务。

所以,我们在开发自己的集合或者容器的时候,应该让容器只负责保存对象,而遍历出所有的对象,这个任务应该单独出来,让别的类的实现。很幸运,Java的容器或者集合,已经帮我们实现了这些东西。下面我们就来看看迭代器模式是怎么一个实现方式。

1:定义一个产品类(一看就懂)

public class Project {private String project_Name;private int staff_Num;private int cost;public Project(String project_Name, int staff_Num, int cost) {super();this.project_Name = project_Name;this.staff_Num = staff_Num;this.cost = cost;}    public String get_Info(){    String info="";    info+="项目名称:"+this.project_Name;    info+="\t项目人数:"+this.staff_Num;    info+="\t 项目费用:"+this.cost;    return info;    }    }
2:定义一个装产品容器的接口

public interface I_ProjectList {    //添加项目public void add(String project_Name,int staff_Num,int cost);//获得一个可以遍历的对象public I_ProjectIterator iterator();}

3:定义一个装产品容器的实现

public class ProjectList implements I_ProjectList{//定义一个项目列表,说有的项目都放在这里private List<Project> list=new ArrayList<Project>();@Override//添加项目public void add(String project_Name, int staff_Num, int cost) {this.list.add(new Project(project_Name, staff_Num, cost));}@Override//得到便遍历器public I_ProjectIterator iterator() {return new ProjectIterator(this.list);}}
4:定义一个迭代器的接口

public interface I_ProjectIterator {    public boolean hasNext();    public Object next();}

5:定一个迭代器的实现

public class ProjectIterator implements I_ProjectIterator {private List<Project> list;private int currentItem=0;public ProjectIterator(List<Project> list) {         this.list=list;}@Overridepublic boolean hasNext() {boolean flag=true;if(this.currentItem>=this.list.size()||this.list.get(currentItem)==null){flag=false;}return flag;}@Override//取得下一个的值public Project next() {return (Project)this.list.get(this.currentItem++);}}

6:现在老板要查看所有的项目信息,我们将这些信息反馈个他

public class Boss {public static void main(String[] args) {         ProjectList projectList=new ProjectList();         projectList.add("宇宙开发项目", 10, 10000);         projectList.add("移动游戏项目", 100, 10000);         projectList.add("房地产开发项目", 200, 2000000);                  I_ProjectIterator it= projectList.iterator();         while(it.hasNext()){         Project project=(Project) it.next();         System.out.println(project.get_Info());         }         }}


输出结果:

项目名称:宇宙开发项目 项目人数:10项目费用:10000
项目名称:移动游戏项目 项目人数:100项目费用:10000
项目名称:房地产开发项目 项目人数:200项目费用:2000000


0 0