Iterator 迭代器模式

Iterator 迭代器模式

目录

[TOC]

1. 概述

1.1. Head First设计模式定义

迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。
迭代器模式让我们能游走于聚合内的每一个元素,而又不暴露其内部的表示。
把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。

1.2. 自我理解

面向Iterator接口编程,无论底层的数据结构和迭代算法如何变化,调用者都不用修改代码

1.3. 迭代器的组成

迭代器(Iterator):迭代器定义访问和遍历元素的接口。
具体迭代器(ConcreteIterator):具体迭代器实现迭代器接口,对该聚合遍历时跟踪当前位置。
聚合(Aggregate):聚合定义创建相应迭代器对象的接口。
具体聚合(ConcreteAggregate):具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator 的一个适当的实例。

1.4. 迭代器模式适用场景

访问一个聚合对象的内容而无需暴露它的内部表示。
支持对聚合对象的多种遍历。
为遍历不同的聚合结构提供一个统一的接口。

2. UML

3. Example

3.1. 场景

爆炸性新闻:对象村的湘菜和川菜合并了。
但是湘菜菜谱用的List,川菜菜谱用的数组,新菜单合并中发现每次打印菜单需要用对应的打印方法。

3.2. 不使用Iterator设计模式的代码实现

3.3. Iterator模式的代码实现

3.3.1. 当前案例UML

3.3.2. 代码

参考文献

《Head First设计模式》
Java 设计模式之迭代器模式

原创文章,转载请注明: 转载自LoserZhao – 诗和远方[ http://www.loserzhao.com/ ]

本文链接地址: http://www.loserzhao.com/java/designpattern/iterator-designpattern.html

文章的脚注信息由WordPress的wp-posturl插件自动生成

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

使用新浪微博登陆