技术开发 频道

《Head First》中的迭代器模式


【IT168技术文档】

  有很多方法可以把对象堆起来成为一个集合.你可以把它们放进数组,堆栈,列表,或者是散列表中,这是你的自由.

  迭代器模式定义:

  提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露它内部的表示.迭代器模式把在元素之间的游走的责任交给迭代器,而不是聚合对象,这不仅让聚合的接口和实现变得更简洁,也可以让聚合更加专注在它所应该专注的事情上面,而不用去理会遍历的事情.

  迭代器类图:

  现在引用《Head First》原文来说明迭代器模式的用法。

  爆炸性新闻:对象村餐厅和对象村煎饼屋合并了.

  原本两家餐厅都是有自己的菜单实现方法,对象村餐厅的菜单用数组实现,而煎饼物的则应用List<>来实现,现在合并了,毕然在菜单上实现方法上要有统一性.两家餐厅都同意这种做法,但是他们又不想改变自己菜单的实现方法,因为在他们各自的餐厅中都有很多地方依赖于自己菜单的实现方法.那么还能不能进行统一呢?答案是肯定的.他们有一个共同的特点:就是都是针对聚合对象操作,无论是散列表,堆栈,List<>,等等,两家菜单都要有遍历自己菜单的功能。这里都引入了迭代器模式。

  统一的迭代器接口:
public interface Iterator<T> { //判断是否有下一个 bool hasNext(); //取得下一个菜单项 T next(); }
0
相关文章