第220章
publicclassHall{
Treetree;//这里可以看作是聚合关系
privateintindex;//指向Tree的标签
小A:“嗯!”
大B:“最常见的是下面这种程序结构。”
(Iteratori=;www.youxs.org;)
index=0;
publicvoidadd(Treetree)
[index]=tree;
index++;
publicIteratorconnectIterator
returnnewTreeIterator(this);
大B:“这里我们定义的山可以抽象出Hall类来,Treetree可以看作是山和树之间的一种聚合关系。add方法就是添加树。问题来了,山和树有了关系,那么山和迭代器有什么关系呢。它们之间肯定有一种关系。我们有了这个容器(山),就要把这个容器来实现迭代的方法:hasNext和Next。这里我们可以看出,山和迭代器之间也是一种关联关系。我们就把它看成是一种聚合关系(聚合关系一种特殊的关联关系)。我们可以通过一个connectIterator方法来链接山和迭代器,接下来我们要去做一个具体的迭代类,这个具体的类中间有了hasNext和Next的具体实现方法。”
packageTreeIterator;
publicclassTreeIteratorimplementsIterator{
privateintlast=0;
privateHallhall;
publicTreeIterator(Hallhall){
=hall;
publicbooleanhasNext{
if(last
//todosomething;
大B:“在用这个模式的时候,我们通常就调用这里的方法,而不关心它的内部组织过程,所以让我们来看看它的内在。”
大B:“我们想想山应该具有什么呢?还是让我来给你讲讲吧。首先它要有种植树的功能,这里可以看作添加树。我们可以想像山的功能是和树相互关联的,那么他们之间是什么关系呢,我们给它们一种聚合的关系,聚合的关系大家可以参考UML图,我在这里给出它的一种程序表现形式。”
packageTreeIterator;
大B:“这个接口我们有2个方法,hasNext是否还有下一条数据,next返回具体的Object这里也就是树。我们先不必要忙着做它的实现类,我们现在要来做的是这个容器。”
大B:“迭代器模式是一种大家经常要用到的模式,在Java的Collections中我们可以经常应用。”
小A:“喔?”
大B:“我给你讲个例子,这个例子是我随便想的,说的是一个山上没有任何的树,现在我们要种植几棵树,例如:苹果树什么的,然后我要遍历这些树,给每颗树喷洒不同的农药!在这个例子中我们可以看到,遍历树的话可以用到迭代器模式!首先我们要做个迭代器接口。”
publicinterfaceIterator{
小A:“什么容器?”
大B:“不是Java中容器,与arraylist什么的无关。正所谓树的容器是什么,是山!”
小A:“山?”
大B:“这个你就要先去了解接口的好处!”
packageTreeIterator;
publicHall(intmaxNumber){
tree=newTree[maxNumber];
publicbooleanhasNext;
publicObjectnext;
小A:“为什么要抽象出来一个接口?”
其他人正在读 :【我在惊悚游戏里封神(无限)】【归雾】【脑叶公司:黑昼】【综漫:这友好交流系统也太友好了】【穿成恶毒娘,我携巨资带三崽逃荒】【我们的家族没落了】【重生之奶爸的悠闲生活】【人道独尊】【制符人】【空之壁垒2】【诡异命纹:开局铭刻十大阎罗】【我的1992在延续】【苟在神诡求长生】【都市第一至尊】【人生副本游戏】【顾命大臣】【镇妖关】【天下第一萌夫】【规则怪谈:这个死亡提示不对劲!】【隋唐:签到五年,朕摊牌了】【斗罗:从俘获女神开始无敌】【绝代神主】【快穿之反派大佬是我囊中物】【尼比鲁英雄传】【将夜:吾为当世仙】【不眠春潮】【这个训练家的宝可梦过于跳脱】【我能看到商品价格曲线】【斗罗三当中的崩坏】【都重生了谁谈恋爱啊】