Design patterns 使用迭代器模式时的用例

Design patterns 使用迭代器模式时的用例,design-patterns,Design Patterns,我是软件开发的新手,我在学习中记录的迭代器模式。我得到了一般的理解,但有人能给出一个用例示例,说明这个模式在哪里有用。迭代器设计模式在中的行为设计模式中 这不是一个奇怪的模式!此模式只是帮助您有一种简单的方法来创建集合并访问其元素。换句话说,这种模式提供了一种有效的方法,可以顺序访问集合的元素,而不必知道集合的结构 其主要思想是,聚合对象(如数组或列表)将为您提供一种访问其元素的方法,而无需暴露其内部结构 您可以使用此模式来处理集合上的迭代,即使在某些语言(如c#)中也是如此。为了简单起见,有一

我是软件开发的新手,我在学习中记录的迭代器模式。我得到了一般的理解,但有人能给出一个用例示例,说明这个模式在哪里有用。

迭代器设计模式在中的行为设计模式中

这不是一个奇怪的模式!此模式只是帮助您有一种简单的方法来创建集合并访问其元素。换句话说,这种模式提供了一种有效的方法,可以顺序访问集合的元素,而不必知道集合的结构

其主要思想是,聚合对象(如数组或列表)将为您提供一种访问其元素的方法,而无需暴露其内部结构

您可以使用此模式来处理集合上的迭代,即使在某些语言(如c#)中也是如此。为了简单起见,有一个内置的迭代模式实现(例如:是一个迭代器模式实现,可以帮助您简单地访问集合,如数据库表集合中的记录等)

有关更多有用信息和简单教程,请参见以下链接:

这里还有一个简单的例子(c#),一个可以用迭代器进行迭代的列表:

class Program
{
    public class Weeks //Aggregate object
    {
        private string[] weeks = new string[]{
            "Monday",
            "Tuesday",
            "Wednesday",
            "Thursday",
            "Friday",
            "Saturday",
            "Sunday"
            };

        public IWeeksIterator GetWeeksIterator()
        {
            //creates an Iterator object
            return new WeeksIterator(weeks);
        }
    }

    public interface IWeeksIterator //Iterator interface
    {
        string Current { get; }

        bool MoveNext();
    }

    public class WeeksIterator : IWeeksIterator //Iterator object
    {
        private readonly string[] weeks;
        private int position;

        public WeeksIterator(string[] weeks)
        {
            this.weeks = weeks;
            this.position = -1;
        }

        public string Current => weeks[position];

        public bool MoveNext()
        {
            if (++position == weeks.Length) return false;
            return true;
        }
    }

    static void Main(string[] args)
    {
        var weeks = new Weeks();
        var iterator = weeks.GetWeeksIterator();
        while (iterator.MoveNext())
        {
            Console.WriteLine(iterator.Current);
        }
        Console.ReadLine();
    }
}

你不明白的是什么?你能详细解释一下吗?这是将功能与实现分离的典型案例。假设你把所有大学生的数据存储在一个数组中,你让我写一个函数,找到计算机科学成绩最高的学生。我写函数。明天,您将决定将学生数据存储在二叉树中,而不是数组中,因为它在某些方面可能更有效。我今天写的函数仍然有效吗?如果我显式引用数组,则不会。如果我使用更通用的迭代器,则会。Wikipedia不是学习设计模式的好来源。我会建议和。