C#设计模式——迭代器模式(Iterator Pattern)
2023-09-14 09:00:19 时间
一、概述
在软件开发过程中,我们可能会希望在不暴露一个集合对象内部结构的同时,可以让外部代码透明地访问其中包含的元素。迭代器模式可以解决这一问题。
二、迭代器模式
迭代器模式提供一种方法顺序访问一个集合对象中的各个元素,而又不需暴露该对象的内部表示。
迭代器模式的结构图如下:
Iterator定义了访问和遍历元素的接口。
ConcreteIterator表示具体的迭代器,它实现了Iterator接口。
Aggregate定义创建相应迭代器对象的接口。
ConcreteAggregate实现创建相应迭代器对象的接口,返回ConcreteIterator的一个实例。
三、示例
在C#中,实现迭代器模式是非常方便的,特别是在C#2.0引入yield return之后。下面来看一个简单的例子。
在例子中实现一个奇数生成器,该对象必须实现IEnumerable接口。
1 public class OddGenerator : IEnumerable
2 {
3 int _max;
4 public OddGenerator(int max)
5 {
6 _max = max;
7 }
8 public IEnumerator GetEnumerator()
9 {
10 for (int i = 1; i <= _max; i += 2)
11 {
12 yield return i;
13 }
14 }
15 }
最后看一下如何调用该对象。
1 static void Main(string[] args)
2 {
3 OddGenerator oddGenerator = new OddGenerator(10);
4 foreach (int i in oddGenerator)
5 {
6 Console.WriteLine(i);
7 }
8
9 Console.ReadLine();
10 }
相关文章
- C#中Socket的简单使用
- C#中如何遍历ArrayList
- C#使用#ziplib压缩和解压缩文件
- 聊聊 C# 中的 Composite 模式(组合模式)
- C# winform 窗体缩放失真
- c#StringBuilder.Replace方法(Char,Char,Int32,Int32)
- C#多线程Singleton(单件)模式模板
- c#代理模式
- C#中验证sql语句是否正确(不执行语句)
- 深入C#内存管理以及优化的方法详解
- 深入c#GDI+简单绘图的具体操作步骤(二)
- 基于C#实现的屏幕指定区域截屏代码
- C#中的多线程多参数传递详解
- c#判断正确的ip地址格式示例
- 浅谈C#设计模式之工厂模式
- c#桥接模式(bridge结构模式)用法实例
- C#中的IDisposable模式用法详解
- C#对象为Null模式(NullObjectPattern)实例教程
- C#命令模式(CommandPattern)实例教程
- C#复合模式(CompositePattern)实例教程
- C#中Response.Write常见问题汇总