• 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 }
  • 相关阅读:
    dig理解dns主备
    Bind的DNS解析设置forward
    DNS服务器的配置与应用: BIND9 的安装与配置
    注意自己的dns设置
    /etc/named/named.conf.options中的Options参数
    安装Bind过程中提示丢失MSVCR110.dll的解决办法
    MS14-025引起的问题
    MS14-025引起的问题
    MS14-082引起的问题
    WSUS更新服务器
  • 原文地址:https://www.cnblogs.com/saville/p/2293279.html
Copyright © 2020-2023  润新知