zoukankan      html  css  js  c++  java
  • C#设计模式——迭代器模式(Iterator Pattern)

    一、概述
    在软件开发过程中,我们可能会希望在不暴露一个集合对象内部结构的同时,可以让外部代码透明地访问其中包含的元素。迭代器模式可以解决这一问题。
    二、迭代器模式
    迭代器模式提供一种方法顺序访问一个集合对象中的各个元素,而又不需暴露该对象的内部表示。
    迭代器模式的结构图如下:

    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 }
    复制代码
     
  • 相关阅读:
    java web项目防止多用户重复登录解决方案
    通过Google浏览器Cookie文件获取cookie信息,80以上版本有效
    js实现json数据导出为Excel下载到本地
    golang 搭建web服务器
    typescript笔记
    canvas屏幕动画
    canvas鼠标特效
    博客皮肤分享
    HTML的背景色和背景图、图片
    HTML表格头部、主体、页脚
  • 原文地址:https://www.cnblogs.com/amylis_chen/p/6007874.html
Copyright © 2011-2022 走看看