C# 设计模式 行为型模式 之 迭代器模式

迭代器模式是非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。

总结:遍历(聚合)集合数据。

场景: 1、访问一个聚合对象的内容而无须暴露它的内部表示。 2、需要为聚合对象提供多种遍历方式。 3、为遍历不同的聚合结构提供一个统一的接口。

优点: 它支持以不同的方式遍历一个聚合对象

下面示例 演示 迭代器模式

namespace 迭代器模式
{
    internal class Program
    {
        static void Main(string[] args)
        {
            RealizeIterator realizeIterator = new RealizeIterator();
   
            for (Iterator iterator = realizeIterator.GetIterator(); iterator.HasNext();)
            {
                Console.WriteLine(iterator.Next());
            }
            /*
             控制台:
            张三
            李四
            王五
            赵六
            田七
             */
        }
    }
    //定义 迭代器 接口 方法
    public interface Iterator
    {
        bool HasNext();
        object Next();
    }
    //容器接口 获取 一个 迭代器对象
    public interface Container
    {
        Iterator GetIterator();
    }
    //实现 迭代器模式 
    public class RealizeIterator: Container
    {
        protected string[] names = new string[] { "张三","李四","王五","赵六","田七"};

        public Iterator GetIterator()
        {
            return new OperationIterator();
        }

        private class OperationIterator :  RealizeIterator, Iterator
        {
            int index;
            public bool HasNext()
            {
                if(index< names.Length)
                {
                    return true;
                }
                return false;
            }

            public object Next()
            {
                if (this.HasNext())
                {
                    return names[index++];
                }
                return null;
            }
        }
    }

}

缺点:由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,这在一定程度上增加了系统的复杂性。

猜你喜欢

转载自blog.csdn.net/q8812345qaz/article/details/127600406