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 }
  • 相关阅读:
    html的一些基本属性介绍
    html的一些基本语法学习与实战
    getline()和get()的使用区别
    浅谈JS执行环境及作用域
    vue的第一个commit分析
    移动端适配-rem(新)
    电商类业务梳理
    不同类型的状态码及含义
    TCP/IP简记
    前端性能优化小结(持续更新)
  • 原文地址:https://www.cnblogs.com/saville/p/2293279.html
Copyright © 2011-2022 走看看