首页 »编程思想 » 迭代器模式:解读设计模式----迭代器模式(Iterator Pattern) »正文
迭代器模式:解读设计模式----迭代器模式(Iterator Pattern)
来源: 发布时间:星期五, 2009年1月9日 浏览:2次 评论:0
![](/icons/75230yi.gif) 、你在开发中使用过迭代吗? 当你在使用JavaScript开发客户端应用 ![](/icons/75230de.gif) 时候使用过for...in吗? 1<script type="text/javascript"> 2var obj; 3useForIn = function ![](/icons/75230kh.gif) 4{ 5 obj = (0,1,2,3,4,5,6,7,8,9); 6 for(var o in obj) 7 { 8 document.write(o); 9 } 10} 11</script> 当你在.NET Frameworks上使用C#,VB.NET,J#等语言开发应用 ![](/icons/75230de.gif) 时候使用过foreach....in吗? 1 Program 2{ 3 void Main(![](/icons/75230string.gif) args) 4 { 5 List< > list = List< > ; 6 //-------- 化集合----------- 7 for ( i = 0; i < 10; i ) 8 { 9 list.Add(i); 10 } 11 //-------遍历集合-------------- 12 foreach ( i in list) 13 { 14 Console.WriteLine(i); 15 } 16 } 17} 如果你是 ![](/icons/75230yi.gif) 位Java发烧者,你在遍历集合 ![](/icons/75230de.gif) 时候是使用什么方式呢?是Iterator?还是for? 1import java.util.*; 2public UseForIn { 3 public void (String args) { 4 List<String> list = ArrayList<String> ; 5 for ( i = 0; i < 10; i ) { 6 list.add("String:" + i); 7 } 8 //--------------使用Iterator遍历集合--------------- 9 Iterator it = list.iterator ; 10 while(it.hasNext ){ 11 .out.pr ln(it.next ); 12 } 13 //------使用for.in(JDK 1.5以更高版本才能支持)----- 14 15 for (String s : list ){ 16 .out.pr ln(s); 17 } 18 } 19}
2、解说迭代模式 我们先来看看迭代器模式 ![](/icons/75230de.gif) UML图(下图来至http://www.dofactory.com/) ![](http://www.crazycoder.cn/WebFiles/20091/02dfc2ab-28e5-425f-89ca-1df3ce02741d.g<img src='/icons/75230if.gif' />) 5、整理总结迭代高手 从上面 ![](/icons/75230de.gif) 几个举例中就可以看出 ![](/icons/75230dou.gif) 尽管我们没有显示 ![](/icons/75230de.gif) 引用迭代器 ![](/icons/75230dou.gif) 但实质还是通过迭代器来遍历 ![](/icons/75230de.gif) ![](/icons/75230dou2.gif) 总地来说 ![](/icons/75230dou.gif) 迭代器模式就是分离了集合对象 ![](/icons/75230de.gif) 迭代行为 ![](/icons/75230dou.gif) 抽象出 ![](/icons/75230yi.gif) 个迭代器类来负责 ![](/icons/75230dou.gif) 这样既可做到不暴露集合 ![](/icons/75230de.gif) 内部结构 ![](/icons/75230dou.gif) 又可以让外部代码可以透明 ![](/icons/75230de.gif) 访问集合内部 ![](/icons/75230de.gif) 元素 ![](/icons/75230dou2.gif) 迭代器模式在访问 ![](/icons/75230shuzu.gif) 、集合、列表等数据时 ![](/icons/75230dou.gif) 尤其是数据库数据操作时 ![](/icons/75230dou.gif) 是非常普遍 ![](/icons/75230de.gif) 应用 ![](/icons/75230dou.gif) 但由于它太普遍了 ![](/icons/75230dou.gif) 所以各种高级语言都对他进行了封装 ![](/icons/75230dou.gif) 所以反而给人感觉此模式本身不太常用了 ![](/icons/75230dou2.gif) 看来现实生活中 ![](/icons/75230de.gif) 售票员就是 ![](/icons/75230yi.gif) 位了不起 ![](/icons/75230de.gif) 迭代高手 ![](/icons/75230dou.gif) 每次乘客上下车他都会数数进行统计 ![](/icons/75230dou.gif) 然后根据他自己 ![](/icons/75230de.gif) 迭代方式去遍历车内 ![](/icons/75230de.gif) 乘客进行售票 ![](/icons/75230dou.gif) 不会放过任何逃票的客 ![](/icons/75230dou2.gif) 任何行业都有窍门技巧和经验 ![](/icons/75230dou.gif) 需要多研究、多琢磨 ![](/icons/75230dou.gif) 才能做到最好 ![](/icons/75230de.gif) ![](/icons/75230dou2.gif) 编程又何尝不是这样 ![](/icons/75230dou.gif) 没有最好 ![](/icons/75230dou.gif) 只有更好 ![](/icons/75230dou.gif) 我们都需要努力
相关文章
读者评论
发表评论
|
|