首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

《Head.First设计形式》的学习笔记(12)--迭代器模式

2012-09-10 
《Head.First设计模式》的学习笔记(12)--迭代器模式??意图:提供一种方法顺序访问一个聚合对象中的各个元素,

《Head.First设计模式》的学习笔记(12)--迭代器模式



??意图:
提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表现。

?结构:

?

《Head.First设计形式》的学习笔记(12)--迭代器模式

?

让我们看一下一个例子:

对乡村的餐厅和对象村的煎饼屋合并了。现在碰到一个棘手的问题,餐厅的菜单是使用Arraylist来实现,而煎饼屋的菜单是用数组来进行实现的,由于各自的菜单已经与其他过多的代码进行耦合,所以不能进行更改,现在有一个女Waitress,需要打印全部菜单,我们最初设想就是去分别遍历各自的菜单,但是如果添加以后我们需要第三种遍历方式。。

我们来看这样的缺点:

1.重复代码过多,都是过多的循环遍历,虽然每种遍历方式不同。

2.将菜单的实现暴露在外,耦合过高。

现在我们来看,按照上述结构我们画出的类图如下:

《Head.First设计形式》的学习笔记(12)--迭代器模式

?下面我们具体看一下代码,煎饼屋的代码:

首先是Inteactor接口我们使用java的api自带的:


《Head.First设计形式》的学习笔记(12)--迭代器模式
?然后我们来看煎饼屋的午餐迭代器的实现:

?

这个就是我们客户的代码。

?

总结:

1.迭代器允许访问聚合元素,而不需要暴露它的内部结构。

2.迭代器将遍历聚合的工总封装到进另一个对象。

3.当使用迭代器的时候,我们依赖聚合提供遍历。

热点排行