天天小说网

20.1 整理项目信息——苦差事

的程序还可以有另外一种实现,通过实现iterator接口来实现遍历,先修正一下类图,如图20-2所示。

图20-2 增加迭代接口的类图

看着是不是复杂了很多?是的,是有点复杂了,是不是我们把简单的事情复杂化了?请读者继续阅读下去,我等会儿说明原因。我们先分析一下我们的类图java.util.Iterator接口中声明了三个方法,这是JDK定义的, ProjectIterator 实现该接口,并且聚合了Project对象,也就是把Project对象作为本对象的成员变量使用。看类图还不是很清晰,我们一起看一下代码,先看IProject接口的改变,如代码清单20-4所示。

代码清单20-4 项目信息接口

public interface IProject {

//增加项目

public void add(String name,int num,int cost);

//从老板这里看到的就是项目信息

public String getProjectInfo();

//获得一个可以被遍历的对象

public IProjectIterator iterator();

这里多了两个方法,一个是add方法,这个方法是增加项目,也就是说产生了一个对象后,直接使用add方法增加项目信息。我们再来看其实现类,如代码清单20-5所示。

代码清单20-5 项目信息

public class Project implements IProject {

//定义一个项目列表,说有的项目都放在这里

private ArrayList

projectList = new ArrayList

();

//项目名称

private String name = "";

//项目成员数量

private int num = 0;

//项目费用

private int cost = 0;

public Project() {

//定义一个构造函数,把所有老板需要看到的信息存储起来

private Project(String name,int num,int cost) {

//赋值到类的成员变量中

this.name = name;

this.num = num;

this.cost=cost;

//增加项目

public void add(String name,int num,int cost) {

this.projectList.add(new Project(name,num,cost));

//得到项目的信息

public String getProjectInfo() {

String info = "";

//获得项目的名称

info = info+ "项目名称是:" + this.name;

//获得项目人数

info = info + "\t项目人数: "+ this.num;

//项目费用

info = info+ "\t 项目费用:"+ this.cost;

return info;

//产生一个遍历对象

public IProjectIterator iterator() {

return new ProjectIterator(this.projectList);

通过构造函数,传递了一个项目所必需的信息,然后通过iterator()方法,把所有项目都返回到一个迭代器中。Iterator()方法看不懂不要紧,继续向下阅读。再看IProjectIterator接口,如代码清单20-6所示。

代码清单20-6 项目迭代器接口

public interface IProjectIterator extends Iterator {

大家可能对该接口感觉很奇怪,你定义的这个接口方法、变量都没有,有什么意义呢?

有意义,所有的Java书上都会说要面向接口编程,你的接口是对一个事物的描述,也就是说我通过接口就知道这个事物有哪些方法,哪些属性,我们这里的IProjectIterator是要建立一个指向Project类的迭代器,目前暂时定义的就是一个通用的迭代器,可能以后会增加IProjectIterator的一些属性或者方法。当然了,你也可以在实现类上实现两个接口,一个是Iterator,一个是IProjectIterator(这时候,这个接口就不用继承Iterator),杀猪杀尾巴,各有各的杀法。我的习惯是:如果我要实现一个容器或者其他API提供接口时,我一般都自己先写一个接口继承,然后再继承自己写的接口,保证自己的实现类只用实现自己写的接口(接口传递,当然也要实现顶层的接口),程序阅读也清晰一些。我们继续看迭代器的实现类,如代码清单20-7所示。

代码清单20-7 项目迭代器

public class ProjectI

更多内容加载中...请稍候...

若您看到此段落,代表章节内容加载失败,请关闭浏览器的阅读模式、畅读模式、小说模式,以及关闭广告屏蔽功能,或复制网址到其他浏览器阅读!

新书推荐

魔法使苍崎青子事件簿 红楼道爷 致郁系编剧 下海后,遇见魔女小姐 人在柯南,但是修罗场 诸天万古道 我在修仙界趋吉避凶 苟在美食的俘虏 从有风的地方开始的文娱 全民废土:我能无限强化避难所