Design patterns 使用迭代器模式时的用例
我是软件开发的新手,我在学习中记录的迭代器模式。我得到了一般的理解,但有人能给出一个用例示例,说明这个模式在哪里有用。迭代器设计模式在中的行为设计模式中 这不是一个奇怪的模式!此模式只是帮助您有一种简单的方法来创建集合并访问其元素。换句话说,这种模式提供了一种有效的方法,可以顺序访问集合的元素,而不必知道集合的结构 其主要思想是,聚合对象(如数组或列表)将为您提供一种访问其元素的方法,而无需暴露其内部结构 您可以使用此模式来处理集合上的迭代,即使在某些语言(如c#)中也是如此。为了简单起见,有一个内置的迭代模式实现(例如:是一个迭代器模式实现,可以帮助您简单地访问集合,如数据库表集合中的记录等) 有关更多有用信息和简单教程,请参见以下链接: 这里还有一个简单的例子(c#),一个可以用迭代器进行迭代的列表:Design patterns 使用迭代器模式时的用例,design-patterns,Design Patterns,我是软件开发的新手,我在学习中记录的迭代器模式。我得到了一般的理解,但有人能给出一个用例示例,说明这个模式在哪里有用。迭代器设计模式在中的行为设计模式中 这不是一个奇怪的模式!此模式只是帮助您有一种简单的方法来创建集合并访问其元素。换句话说,这种模式提供了一种有效的方法,可以顺序访问集合的元素,而不必知道集合的结构 其主要思想是,聚合对象(如数组或列表)将为您提供一种访问其元素的方法,而无需暴露其内部结构 您可以使用此模式来处理集合上的迭代,即使在某些语言(如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不是学习设计模式的好来源。我会建议和。