【C#设计模式(17)——迭代器模式(Iterator Pattern)】

前言

迭代器模式可以使用统一的接口来遍历不同类型的集合对象,而不需要关心其内部的具体实现。

代码

csharp 复制代码
//迭代器接口
public interface Iterator
{
    bool HashNext();
    object Next();
}
//集合接口
public interface Collection
{
    Iterator CreateIterator();
}
//元素迭代器
public class ElementIterator : Iterator
{
    private string[] elements;
    private int index = 0;
    
    public ElementIterator(string[] elements)
    {
        this.elements = elements;
    }

    public bool HashNext()
    {
        return index < elements.Length;
    }

    public object Next()
    {
        if (index < elements.Length)
        {
            return elements[index++];
        }
        return null;
    }
}

//元素集合
public class ElementCollection : Collection
{
    private string[] elements;
    public ElementCollection(string[] elements)
    {
        this.elements = elements;
    }

    public Iterator CreateIterator()
    {
        return new ElementIterator(elements);
    }
}

/*
 * 行为型模式:Behavioral Pattern 
 * 迭代器模式:Iterator Pattern
 */
internal class Program
{
    static void Main(string[] args)
    {
        string[] elements = { "A", "B", "C", "D", "E", "F",};

        Collection collection = new ElementCollection(elements);
        Iterator iterator = collection.CreateIterator();
        while(iterator.HashNext())
        {
            Console.WriteLine(iterator.Next().ToString());
        }
        Console.ReadLine();
    }
}

结果

相关推荐
hixiong1232 小时前
C# OpencvSharp获取Astra Pro奥比中光深度相机深度图
数码相机·opencv·计算机视觉·c#
ggtc3 小时前
为workflow-core扩展外抛事件
c#·webapi·workflow-core
咕白m6253 小时前
C# 使用 Spire.Doc 实现企业级 Word 文档打印方案
c#
此wei浩亦4 小时前
WPF中使用 using prism.region 报错
c#·wpf·prism
EanoJiang9 小时前
仿神秘海域/美末环境交互的程序化动画学习
游戏·c#
妮妮学代码17 小时前
c#:TCP服务端管理类
java·tcp/ip·c#
SchuylerEX19 小时前
第六章 JavaScript 互操(2).NET调用JS
前端·c#·.net·blazor·ui框架
★YUI★19 小时前
学习游戏制作记录(制作系统与物品掉落系统)8.16
学习·游戏·ui·unity·c#
Leo来编程1 天前
设计模式1-单例模式
单例模式·设计模式
危险库1 天前
单例模式:确保一个类只有一个实例【设计模式】
javascript·单例模式·设计模式