迭代模式 傷城~ 2021-12-09 00:49 356阅读 0赞 ## 前言 ## **迭代模式(Iterator),**提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。 ## 一、Aggregate聚合抽象类 ## 1 public abstract class Aggregate 2 { 3 public abstract Iterator CreateIterator(); 4 } ## 二、Iterator迭代器抽象类 ## 1 public abstract class Iterator 2 { 3 public abstract object First(); 4 public abstract object Next(); 5 public abstract bool IsDone(); 6 public abstract object CurrentItem(); 7 } ## 三、Iterator具体迭代类(正序迭代) ## 1 public class ConcreteIterator : Iterator 2 { 3 //定义一个具体聚集对象 4 private ConcreteAggregate aggregate; 5 6 private int current = 0; 7 //初始化时将具体的聚集对象传入 8 public ConcreteIterator(ConcreteAggregate aggregate) 9 { 10 this.aggregate = aggregate; 11 } 12 //得到聚集的第一个对象 13 public override object First() 14 { 15 return aggregate[0]; 16 } 17 //返回当前聚集对象 18 public override object CurrentItem() 19 { 20 return aggregate[current]; 21 } 22 23 //判断当前是否遍历到结尾 24 public override bool IsDone() 25 { 26 return current >= aggregate.Count ? true : false; 27 } 28 //得到聚集的下一个对象 29 public override object Next() 30 { 31 object ret = null; 32 current++; 33 if (current < aggregate.Count) 34 { 35 ret = aggregate[current]; 36 } 37 return ret; 38 } 39 } ## 四、Iterator具体迭代类(倒序迭代) ## 1 public class ConcreteIteratorDesc : Iterator 2 { 3 //定义一个具体聚集对象 4 private ConcreteAggregate aggregate; 5 6 private int current = 0; 7 //初始化时将具体的聚集对象传入 8 public ConcreteIteratorDesc(ConcreteAggregate aggregate) 9 { 10 this.aggregate = aggregate; 11 current = aggregate.Count - 1; 12 } 13 public override object CurrentItem() 14 { 15 return aggregate[current]; 16 } 17 18 public override object First() 19 { 20 return aggregate[aggregate.Count - 1]; 21 } 22 23 public override bool IsDone() 24 { 25 return current < 0 ? true : false; 26 } 27 28 public override object Next() 29 { 30 object ret = null; 31 current--; 32 if (current >= 0) 33 { 34 ret = aggregate[current]; 35 } 36 return ret; 37 } 38 } ## 五、Aggregate具体的聚集类 ## 1 public class ConcreteAggregate : Aggregate 2 { 3 private IList<object> items = new List<object>(); 4 public override Iterator CreateIterator() 5 { 6 return new ConcreteIterator(this); 7 } 8 //集合总数 9 public int Count { get { return items.Count; } } 10 //声明一个索引 11 public object this[int index] 12 { 13 get { return items[index]; } 14 set { items.Insert(index, value); } 15 } 16 } ## 总结 ## 1、当你需要对聚集有种方式遍历时,可以考虑用迭代模式。 2、迭代器(Iterator)模式就是分离了集合对象的遍历行为,抽象出一个迭代器类负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明地访问集合内部的数据。 **参考数据:**大话设计模式
相关 迭代模式 java_java设计模式_迭代器模式 ![a3ef783dacc4485d22e1a0dc4663a7aa.png][] /\\ \ @Title: Aggregate.java \ @Package com 系统管理员/ 2022年11月05日 10:54/ 0 赞/ 388 阅读
相关 迭代器模式 一、前言 `相信相信的力量!` 从懵懂的少年,到拿起键盘,可以写一个HelloWorld。多数人在这并不会感觉有多难,也不会认为做不出来。因为这样的例子,有老师的指导、 ╰半夏微凉°/ 2022年10月16日 15:21/ 0 赞/ 27 阅读
相关 迭代器模式 转载:[迭代器模式 - C语言中文网][- C] 迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。迭代器模式是 你的名字/ 2022年09月01日 13:47/ 0 赞/ 18 阅读
相关 迭代模式 前言 迭代模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而不暴露该对象的内部表示。 一、Aggregate聚合抽象类 傷城~/ 2021年12月09日 00:49/ 0 赞/ 357 阅读
相关 迭代器模式 在软件开发中,可以存储多个成员对象的类称为聚合类(Aggregate Classes),对应的对象称为聚合对象。迭代器模式可以让客户端在无须了解聚合对象的内部结构的情况下,即可 深碍√TFBOYSˉ_/ 2021年10月15日 09:33/ 0 赞/ 444 阅读
相关 迭代器模式 用途 -------------------- 迭代器模式 (Iterator) 提供一种方法顺序访问一个聚合对象中各个元素,而又 不暴露该对象的内部表示。 迭代器模式 港控/mmm°/ 2021年09月26日 15:52/ 0 赞/ 549 阅读
相关 迭代器模式 迭代器模式:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部元素; 为遍历的对象提供一个如开始、下一个、是否结束、当前哪一项等统一的接口。 优点: 1、它 柔光的暖阳◎/ 2021年09月17日 02:10/ 0 赞/ 456 阅读
相关 迭代器模式 16.迭代器模式 ![70][] class Program { static void Main(string[] a 雨点打透心脏的1/2处/ 2021年09月17日 00:04/ 0 赞/ 541 阅读
相关 迭代器模式 一 点睛 定义 提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 二 结构 迭代器模式主要包含以下角色: 抽象聚合(Aggre 系统管理员/ 2021年07月25日 01:50/ 0 赞/ 512 阅读
相关 迭代器模式 代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 ... 小灰灰/ 2020年06月13日 05:39/ 0 赞/ 824 阅读
还没有评论,来说两句吧...