在.Net中,我们很少有机会使用Iterator模式,因为.Net Framework已经运用Iterator模式为所有的集合对象实现了迭代器。我们在遍历集合对象时,喜欢使用C#提供的foreach语句来访问该对象中的所有元素,例如访问
ArrayList对象al:
foreach (object o in al)
{
      Console.WriteLine(o.ToString());
}
而该语句的实质就是使用了迭代器:
IEnumerator e = al.GetEnumerator();
while (e.MoveNext())
{
      Console.WriteLine(e.Current.ToString());
}
然而,我们通过.Net中的集合对象来分析Iterator模式,仍然是有意义的。一方面它可以帮助我们了解这个模式的实现原理;另一方面,通过Iterator模式将具体的集合对象与迭代器分开的设计方式,也可以促进我们对OOD中,有关“职责分离”的理解。

本文链接:《.Net中的设计模式——Iterator模式》

转载于:https://www.cnblogs.com/wayfarer/archive/2005/08/22/219964.html

.Net中的设计模式——Iterator模式相关推荐

  1. [Head First设计模式]餐馆中的设计模式——命令模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  2. [Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  3. 工作中的设计模式 —— 策略模式

    前言 返利网站 https://m.cpa5.cn/ 策略模式是一种行为设计模式,它能让你定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换. 使用场景 策略模式在工作中使用的 ...

  4. 设计模式——Iterator模式实现研究

    导读:软件设计模式是一种表达.记录和重用软件设计结构和设计经验的新方法,它对反复出现的设计结构的关键特征进行识别.抽象和命名,使重用成功设计和结构更加容易.本文介绍了软件设计模式的特点.描述方式以及在 ...

  5. 设计模式 - 适应设计模式 - Iterator模式(一)

    目录 1.什么是Iterator模式 2.为什么需要Iterator模式 3.Iterator模式的主要角色 4.总结 1.什么是Iterator模式 直接翻译的话其实是叫做迭代器模式,在英文单词中有 ...

  6. Android中的设计模式-桥梁模式

    "假舆马者,非利足也,而致千里:假舟楫者,非能水也,而绝江河.君子生非异也,善假于物也."--荀子<劝学>. 美国好莱坞电影有<蜘蛛侠>.<蝙蝠侠&g ...

  7. NET中的设计模式---单件模式

    如众所知,单件模式做为<Gof 23中设计模式>之一,其意图仅允许单件类的一个实例存在(扩展单件模式不在此文范围内),并提供全局的访问方法.UML类图如下. http://csharpin ...

  8. 【知识分享】C语言中的设计模式——命令模式

    背景     命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式.请求以命令的形式包裹在对象中,并传给调用对象.调用对象寻找可以处理该命令的合适的对象,并把该命令传给 ...

  9. 阿里软件测试工程师手把手教学:自动化脚本中的设计模式-PO模式详解

    请点击输入图片描述(最多18字) 当我们以脚本的形式编写了大量的自动化测试代码后,很容易发现代码可读性太差了.任何一个测试脚本几乎毫无扩展能力或者说扩展起来只能修改边边角角.一旦被测系统的UI层发生变 ...

最新文章

  1. 现实世界的Windows Azure:采访圣地亚哥公共安全小组的技术经理Adrian Gonzalez
  2. .NET Framework 4.0-RequestValidationMode
  3. tableau可视化函数使用案例(六十七)-如何用Tableau获取数据并对数据进行操作?
  4. LeetCode——Find the Difference
  5. element-vue的简单使用
  6. 声学漫谈之六:音腔频段如何判定?
  7. 【linux】学习笔记
  8. 万物皆可“小程序”——迟到的iOS 14之猜想
  9. Hive报错:Exception in thread main java.lang.Incom。。。。 Class com.google.common.collect.ImmutableSotil
  10. AI云原生浅谈:好未来AI中台实践
  11. 招人!入职阿里仅1年,我和做AI的程序员薪资翻了2倍!
  12. Win7、Ubuntu双系统正确卸载Ubuntu系统
  13. 流行的Spring Boot + Vue架构整合开发的网易云,附源码!
  14. rexpathbs4
  15. visio2013专业版激活密匙
  16. 魔兽争霸3冰封王座,打不开,提示“此版本之魔兽争霸3需要特定语言版本之windows“
  17. linux安装微信 安装百度网盘 下载大文件
  18. JUCE学习笔记04-LookAndFeel类自定义Slider颜色
  19. 计算机网络的概述以及网络的组成
  20. 原生JS实现网页导航条特效

热门文章

  1. python【蓝桥杯vip练习题库】ADV-183分苹果(差分数组 离线区间)
  2. Android移动开发之【Android实战项目】DAY2-使用Fragment实现底部菜单栏
  3. Hp linux tar 解压,tar命令的用法(百度)(HP_UX)
  4. esp32 micropython spiffs_二十一,ESP32 SPIFFS:读取一个文件
  5. 网站被黑你隔了多久才知道?
  6. android 自定义天气特效,《Android自定义控件》WindMillView,仿华为天气风车效果
  7. java正则表达式逗号_正则表达式只匹配逗号而不是括号?
  8. vb如何测试连接mysql_怎么在vb程序中查找数据库信息并显示
  9. 注解报错_Java中的注解使用:全面性的总结一下
  10. python动态执行代码_第6.6节 Python动态执行小结