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 }
  • 相关阅读:
    A*算法在栅格地图上的路径搜索(python实现)_1.1
    python基础
    Celery ---异步任务,定时任务,周期任务
    Flask-Script
    Flask-SQLAlchemy
    SQLAlchemy的增删改查 一对多 多对多
    Django Rest framework
    django之forms组件
    缓存, 队列(Redis,RabbitMQ)
    django框架(2)
  • 原文地址:https://www.cnblogs.com/saville/p/2293279.html
Copyright © 2011-2022 走看看