小菜学设计模式——迭代器模式

原创
2015/06/18 11:44
阅读数 344

背景

    迭代就是遍历的一个过程,既然是遍历自然是无处不在,比如说,在大街上看美女的时候,总是一个也不放过,一个个尽收眼底,不过,说实话,夏天看美女,其实我是拒绝的,不说了,鼻血有要留出了


1、使用意图

    遍历每一个对象


2、生活实例

    公交车上的售票员查票,对每一个乘客都进行查票,验票。


3、Java 例子(框架、JDK 、JEE)

    集合的顶层接口Collection就是实现了接口Iterable,他就是一个迭代器模式的封装,Iterable只有一个方法,Iterator<T> iterator(); 然而Iterator声明了对应迭代的方法,就是如下:

boolean hasNext();E next();void remove();

其实,我们不管是使用Map还是List,有时候都会去遍历是删除成员,这个时候迭代器是最好的,因为普通的For是不能在迭代中删除成员的。


4、模式类图

Aggregate:抽象成员角色,他就是遍历的对象成员

ConcreteAggregate:具体成员角色,对Aggregate的具体实现,其实聚集对象就是集合或说数组

Iterator:抽象迭代器,他声明迭代的工具方法

ConcreteIterator:具体迭代器,他实现迭代的工具方法,可以有各种不同的遍历实现


5、模式优点

    迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。

    当需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候,就应该考虑使用迭代器模式。

    当你需要对聚集对象有多种方式遍历时可以考虑使用迭代器模式。

    为遍历不同的聚集结构提供如开始、下一个、是否结束、当前哪一项等统一的接口。

    迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合内部结构,又可以外部代码透明地访问集合内部数据


6、与类似模式比较

    看完这个设计模式,感觉到迭代器模式神乎其神了,这个模式确实是无处不在啊,而且Java中for 循环就是一个体现,遍历是多样话的,但是迭代器模式确实就是当中一个原理。

        


展开阅读全文
打赏
0
5 收藏
分享
加载中
更多评论
打赏
0 评论
5 收藏
0
分享
返回顶部
顶部