1:管理良好的集合
有许多种方法可以把对象推起来成为一个集合,可以放进数组、堆栈、列表或者是散列表中。每一种都有它自己的优点和合适的使用时机,但总有一个时候,客户想要遍历这些对象,当他这么做的时候,你打算给客户看到你的实现?我们当然是希望不要,这太不专业了。本章节就是学习如何让客户遍历你的对象而又无法窥视你存储对象的方式,也将学习如何创建一些对象超集合,能够一口气就跳过某些让人望而生畏的数据结构。
2:对象村餐厅和对象村煎饼屋合并
基于合并两个餐厅,所有菜单也需要合并,但是餐厅跟煎饼的菜单实现是不一样的。他们在菜单项的存储方式上花了很多的时间和代码,也许又许多其他代码依赖项。
餐厅的菜单代码实现图2.1:(使用arraylist)
图2.1
煎饼的菜单代码实现图2.2:(使用数组)
图2.2
迭代器代码(图2.3):
图2.3
3:会见迭代器模式
如上图2.3所示,我们对遍历的封装已经凑效了,这个就是迭代器模式。
关于迭代器模式,你所需要知道的第一件事情,就是它依赖一个名为迭代器的接口,有个这个接口,就可以为各种对象集合实现迭代器:数组、列表、散列表。
图3.1
4:定义迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象的各个元素,而又不是暴露其内部的表示。
图4.1
5:定义组合模式
组合模式:允许你讲对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。
图5.1