`

设计模式----迭代器模式(Iterator)

 
阅读更多
IProject.java代码如下:
package com.designPattern.iterator;

public interface IProject {

	public void add(String name,int num,int cost);
	
	public String getProjectInfo();
	
	public IProjectIterator iterator();
}




Project.java代码如下:


package com.designPattern.iterator;

import java.util.ArrayList;

public class Project  implements IProject{
	
	private ArrayList<IProject> projectList = new ArrayList<IProject>();
	
	private String name = "";
	
	private int num = 0;
	
	private int cost = 0;
	
	public Project(){
		
	}
	
	public Project(String name,int num,int cost){
		this.name = name;
		this.num = num;
		this.cost = cost;
		
	}

	@Override
	public void add(String name, int num, int cost) {
		this.projectList.add(new Project(name,num,cost));
		
	}

	@Override
	public String getProjectInfo() {
		String info = "项目名称是:"+this.name+"\t项目人数为:"+this.num+"\t项目费用为:"+this.cost;
		return info;
	}

	@Override
	public IProjectIterator iterator() {
		
		return new ProjectIterator(this.projectList);
	}

}



IProjectIterator.java代码如下:
package com.designPattern.iterator;

import java.util.Iterator;

public interface IProjectIterator extends Iterator<IProject>{

}



ProjectIterator.java代码如下:
package com.designPattern.iterator;

import java.util.ArrayList;

public class ProjectIterator implements IProjectIterator{

	private ArrayList<IProject> projectList = new ArrayList<IProject>();
	
	private int currentItem = 0;
	
	public ProjectIterator(ArrayList<IProject> projectList){
		this.projectList = projectList;
	}
	
	@Override
	public boolean hasNext() {
		boolean bool = true;
		if(this.currentItem>=projectList.size()||this.projectList.get(this.currentItem)==null){
			bool = false ;
		}
			return bool;
	}

	@Override
	public IProject next() {
		return (IProject)this.projectList.get(this.currentItem++);
	}

	@Override
	public void remove() {
		
	}

}



Boss.java代码如下:
package com.designPattern.iterator;

/**
 * JDK1.2之后出现的Iterator
 * @author yangjianzhou
 *
 */
public class Boss {
	
	public static void main(String[] args) {
		
		IProject project = new Project();
		project.add("星球大战", 10, 100000);
		project.add("CS", 10, 100000);
		project.add("WOW", 10, 100000);
		project.add("地下城勇士", 10, 100000);
		
		for(int i=4;i<100;i++){
			project.add("第个"+i+"项目", 20, 100000);
		}
		
		IProjectIterator projectIterator = project.iterator();
		while(projectIterator.hasNext()){
			IProject p = projectIterator.next();
			System.out.println(p.getProjectInfo());
		}
		
	}

}



运行结果如下:
项目名称是:星球大战	项目人数为:10	项目费用为:100000
项目名称是:CS	项目人数为:10	项目费用为:100000
项目名称是:WOW	项目人数为:10	项目费用为:100000
项目名称是:地下城勇士	项目人数为:10	项目费用为:100000
项目名称是:第个4项目	项目人数为:20	项目费用为:100000
项目名称是:第个5项目	项目人数为:20	项目费用为:100000
项目名称是:第个6项目	项目人数为:20	项目费用为:100000
项目名称是:第个7项目	项目人数为:20	项目费用为:100000
项目名称是:第个8项目	项目人数为:20	项目费用为:100000
项目名称是:第个9项目	项目人数为:20	项目费用为:100000
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics