- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
22.设计模式.迭代器模式(Iterator)
设计模式(Design Pattern) 张凯 副教授计算机学院 软件工程系a11a12……..a1n a21a22……..a2n …………………. am1am2……..amn 问题(Problem)遍历二维数组1 2 3 45 67 8问题(Problem)遍历三维数组问题(Problem)每个人都要买票问题(Problem) static void Main(string[] args) { ArrayList a = new ArrayList() ; a.Add(大鸟); a.Add(小菜); a.Add(行李); a.Add(老外); a.Add(公交内部员工); a.Add(“小朋友); foreach (string item in a) { Console.WriteLine({0} 请买车票!, item); } Console.Read(); }3142模式实例与解析模式效果与应用模式结构与分析模式动机与定义主要内容迭代器模式(Iterator)模式动机模式名称:迭代器模式(Iterator)一个聚合对象,如一个列表(List)或者一个集合(Set),应该提供一种方法来让别人可以访问它的元素,而又不需要暴露它的内部结构。针对不同的需要,可能还要以不同的方式遍历整个聚合对象,但是我们并不希望在聚合对象的抽象层接口中充斥着各种不同遍历的操作。怎样遍历一个聚合对象,又不需要了解聚合对象的内部结构,还能够提供多种不同的遍历方式,这就是迭代器模式所要解决的问题。迭代器模式(Iterator)模式动机在迭代器模式中,提供一个外部的迭代器来对聚合对象进行访问和遍历,迭代器定义了一个访问该聚合元素的接口,并且可以跟踪当前遍历的元素,了解哪些元素已经遍历过而哪些没有。有了迭代器模式,我们会发现对一个复杂的聚合对象的操作会变得如此简单。迭代器模式(Iterator)模式定义 迭代器模式(Iterator Pattern) :提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示,其别名为游标(Cursor)。迭代器模式是一种对象行为型模式。迭代器模式(Iterator)模式结构 依赖关系关联关系迭代器模式(Iterator)参与者 Iterator: 抽象迭代器ConcreteIterator: 具体迭代器Aggregate: 抽象聚合类ConcreteAggregate: 具体聚合类迭代器模式(Iterator)索引器 索引器允许类和结构的实例用下标进行访问,这种方式类似于访问数组、集合的元素,但不单单是通过下标,例如通过对象的各属性值也是可以的。索引器写在类或者结构中,其格式类似于:public?object?this[int?index]{?get?{ return?objects[int]; }?set?{ objects[int] = value; }} 索引器是特殊的属性,可以有get、set访问器,可以重载。object是返回的对象类型,this代表类或结构自己,int index表示索引类型。这与索引器的调用格式:对象[索引],相对应。迭代器模式(Iterator)public?class?Car{?/// summary?/// 品牌?/// /summary?public?string?Brand { get; set; }??/// summary?/// 颜色?/// /summary?public?string?Color { get; set; }??/// summary?/// 覆盖object的ToString()方法?/// /summary?/// returns/returns?public?override?string?ToString()?{?return?string.Format(A {0} {1}., this.Color, this.Brand);?}}迭代器模式(Iterator)public?class?Cars{?public?IListCar List { get; set; }?/// summary?/// 用下标访问的索引器?/// /summary?/// param name=index下标/param?/// returns汽车/returns?public?Car this[int?index]?{?get?{ return?this.List[index]; }?}?/// summary?/// 用品牌访问的索引器?/// /summary?/// param name=brand品牌/param?/// returns汽车/returns?public?Car this[string?brand]?{?get?{?for?
您可能关注的文档
最近下载
- (高清版)B-T 24353-2022 风险管理 指南.pdf VIP
- GB∕T 24353-2022 《风险管理 指南》解读和应用指导材料(雷泽佳编写2024B0).pdf VIP
- 2025年版检验检测机构资质认定评审准则考试试题及答案.pdf VIP
- 前交通动脉瘤破裂伴蛛网膜下腔出血个案护理.pptx VIP
- 临床颅内动脉瘤破裂伴蛛网膜下腔出血的个案护理.pptx VIP
- 检验检测机构资质认定评审准则试题及答案.pdf VIP
- 语文教学中的心理健康教育心得体会.docx VIP
- 《检验检测机构资质认定评审准则》试题及答案.pdf VIP
- 蛛网膜下腔出血的个案护理.pptx VIP
- 蛛网膜下腔出血的个案护理.ppt VIP
文档评论(0)