继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Java设计模式--迭代器模式

喵喔喔
关注TA
已关注
手记 516
粉丝 103
获赞 606

一、概念

  迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的话,集合对象就承担太多的责任了,面向对象设计原则中有一条是单一职责原则,所以我们要尽可能地分离这些职责,用不同的类去承担不同的职责。迭代器模式就是用迭代器类来承担遍历集合元素的职责。分离集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。

二、实现

  迭代器模式由以下部分组成:

    迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口

    具体迭代器角色(ConcreteIteraror):具体迭代器角色实现了迭代器接口,并需要记录遍历中的当前位置。

    集合角色(Aggregate):聚合角色负责定义获得迭代器角色的接口

    具体集合角色(ConcreteAggregate):具体聚合角色实现聚合角色接口。

    具体迭代器:

?

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
public class ConcreteIterator implements Iterator 
private ConcreteAggregate objects; 
public ConcreteIterator(ConcreteAggregate objects) 
this.objects=objects; 
public void first() 
{ ...... } 
public void next() 
{ ...... } 
public boolean hasNext() 
{ ...... } 
public Object currentItem() 
{ ...... } 
}

具体集合:

?

1
2
3
4
5
6
7
8
9
public class ConcreteAggregate implements Aggregate 
...... 
public Iterator createIterator() 
return new ConcreteIterator(this); 
...... 
}


三、优缺点

        迭代器模式的优点有:

        1.简化了遍历方式,对于对象集合的遍历,还是比较麻烦的,对于数组或者有序列表,可以通过游标来取得,自行遍历对象,但是对于hash表来说,遍历起来就麻烦了。迭代器用起来就简单的多了。

         2.可以提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进行遍历了。

         3.封装性良好,用户只需要得到迭代器就可以遍历,而对于遍历算法则不用去关心。

        迭代器模式的缺点:

        对于比较简单的遍历(像数组或者有序列表),使用迭代器方式遍历较为繁琐,大家可能都有感觉,像ArrayList,我们宁可愿意使用for循环和get方法来遍历集合。

原文链接:http://www.apkbus.com/blog-780485-77084.html

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP