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 }
  • 相关阅读:
    微信小程序通过CODE换取session_key和openid
    BZOJ1497[NOI2006]最大获利——最大权闭合子图
    Leetcode#149 Max Points on a Line
    IO流总结
    java基础比较好的笔记总结
    chrome web开发工具
    day 01 常量 注释 int(整型) 用户交互input 流程控制语句if
    10.2:异或树经验
    搜索+保存路径
    搜索+简单dp
  • 原文地址:https://www.cnblogs.com/saville/p/2293279.html
Copyright © 2011-2022 走看看