C#设计模式——迭代器模式(Iterator Pattern)
2023-09-14 08:58:57 时间
一、概述
在软件开发过程中,我们可能会希望在不暴露一个集合对象内部结构的同时,可以让外部代码透明地访问其中包含的元素。迭代器模式可以解决这一问题。
二、迭代器模式
迭代器模式提供一种方法顺序访问一个集合对象中的各个元素,而又不需暴露该对象的内部表示。
迭代器模式的结构图如下:
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# 中的 Visitor 模式
- C#验证码的实现_验证码怎么实现
- C#调用Python方式
- 聊聊 C# 中的 Visitor 模式(访问者模式)
- 【Unity3D】Unity 中使用 C# 调用 Java ① ( Android Studio 模块准备 | 编译 Android 模块拿到字节码文件 | 拷贝字节码到 Unity 编辑器 )
- c#数据的序列化和反序列化(推荐版)
- c#设计模式适配器模式详细介绍
- c#代理模式
- 深入c#工厂模式的详解
- c#生成站点地图(SiteMapPath)文件示例程序
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- C#操作FTP出现500错误解决办法
- C#实现的图片盖章功能,支持拖拽、旋转、放缩、保存
- 浅谈C#设计模式之代理模式
- 浅谈C#设计模式之工厂模式
- C#对象为Null模式(NullObjectPattern)实例教程
- C#备忘录模式(MementoPattern)实例教程