您的位置:首页 > 其它

解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手

2008-05-14 17:56 537 查看
一、你在开发中使用过迭代吗?

当你在使用JavaScript开发客户端应用的时候使用过for...in吗?

1<script type="text/javascript">

2var obj;

3useForIn = function ()

4</script>

当你在.NET Frameworks上使用C#,VB.NET,J#等语言开发应用的时候使用过foreach....in吗?

1class Program

2import java.util.*;

2namespace DesignPattern.Iterator

2using System;

2using System.Collections.Generic;

3using System.Text;

4using System.Collections;

5

6namespace DesignPattern.Iterator

7

我们来比较下使用ArrayList和自定义的ReverseList类通过foreach....in遍历后的结果:

1using System;

2using System.Collections.Generic;

3using System.Text;

4

5namespace DesignPattern.Iterator

6public class 公交车:ArrayList

2using System;

2using System.Collections.Generic;

3using System.Text;

4

5namespace DesignPattern.Iterator

6namespace DesignPattern.Iterator

2{

3{

5{

7{

12{

18{

28{

30{

34 Console.WriteLine("你好{0}同志,你还没有买票,要走可以,请先买票!", k.Name);

35 }

36 }

37 }

38 }

39}

上面的代码很简单,我就不做详细解说,运行结果如下图:



五、总结迭代高手

从上面的几个示例中就可以看出,尽管我们没有显示的引用迭代器,但实质还是通过迭代器来遍历的。总地来说,迭代器模式就是分离了集合对象的迭代行为,抽象出一个迭代器类来负责,这样既可做到不暴露集合的内部结构,又可以让外部代码可以透明的访问集合内部的元素。

迭代器模式在访问数组、集合、列表等数据时,尤其是数据库数据操作时,是非常普遍的应用,但由于它太普遍了,所以各种高级语言都对他进行了封装,所以反而给人感觉此模式本身不太常用了。

看来现实生活中的售票员就是一位了不起的迭代高手,每次乘客上下车他都会数数进行统计,然后根据他自己的迭代方式去遍历车内的乘客进行售票,不会放过任何逃票之客。

任何行业都有技巧和经验,需要多思考、多琢磨,才能做到最好的。

编程又何尝不是这样,没有最好,只有更好,我们都需要努力。

注:上面总结源于《大话设计模式》

转载请注明出处:http://beniao.cnblogs.comhttp://www.cnblogs.com

-----------------------------------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: