在.Net中,我们很少有机会使用Iterator模式,因为.Net Framework已经运用Iterator模式为所有的集合对象实现了迭代器。我们在遍历集合对象时,喜欢使用C#提供的foreach语句来访问该对象中的所有元素,例如访问
ArrayList对象al:
foreach (object o in al)
{
Console.WriteLine(o.ToString());
}
而该语句的实质就是使用了迭代器:
IEnumerator e = al.GetEnumerator();
while (e.MoveNext())
{
Console.WriteLine(e.Current.ToString());
}
然而,我们通过.Net中的集合对象来分析Iterator模式,仍然是有意义的。一方面它可以帮助我们了解这个模式的实现原理;另一方面,通过Iterator模式将具体的集合对象与迭代器分开的设计方式,也可以促进我们对OOD中,有关“职责分离”的理解。
本文链接:《.Net中的设计模式——Iterator模式》