设计模式-迭代器模式

概述

迭代器模式也是一种行为型的设计模式主要是提供一种迭代数据的方法,可以使用户不知道内部结构的实现情况下遍历所有的元素,其主要组成部分是,迭代器接口,迭代器,集合接口,集合类用户在使用的时候创建一个集合类,然后把数据加入到其中,就可以使用迭代器类来遍历所有的元素


例子:在不适用for foreach等方法的情况下遍历集合。

迭代器模式

using static POC;
using System.Numerics;

internal class Program
{
    private static void Main(string[] args)
    {
        // 创建集合并添加元素
        Aggregate<string> aggregate = new Aggregate<string>();
        aggregate.Add("Apple");
        aggregate.Add("banana");
        aggregate.Add("peach");

        // 获取迭代器并遍历集合
        IIterator<string> iterator = aggregate.CreateIterator();

        while (iterator.HasNext())
        {
            string item = iterator.Next();
            Console.WriteLine(item);
        }
    }

    public interface IIterator<T>//迭代器接口
    {
        bool HasNext();
        T Next();
    }
    public interface IAggregate<T>//集合接口
    {
        IIterator<T> CreateIterator();
    }

    public class Iterator<T> : IIterator<T>//迭代器类
    {
        private readonly Aggregate<T> _aggregater;
        private int _index;

        public Iterator(Aggregate<T> aggregater)
        {
            _aggregater = aggregater;
            _index = 0;
        }
        public bool HasNext()
        {
            return _index < _aggregater.Count;
        }
        public T Next()
        {
            return _aggregater[_index++];
        }
    }
    public class Aggregate<T> : IAggregate<T>//集合类
    {
        private readonly List<T> _items = new List<T>();
        public int Count => _items.Count;

        public T this[int index]
        {
            set => _items[index] = value;
            get => _items[index];
        }
        public void Add(T item)
        {
            _items.Add(item);
        }
        public void Remove(T item)
        {
            _items.Remove(item);
        }
        public IIterator<T> CreateIterator()
        {
            return new Iterator<T>(this);
        }
    }
}


输出结果:

Apple
banana
peach

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值