原文:乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
[索引页][源码下载]
乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
作者:webabcd
介绍
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
示例
有一个Message实体类,某聚合对象内的各个元素均为该实体对象,现在要提供一种方法顺序地访问这个聚合对象中的各个元素。
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL2ltYWdlcy5jbmJsb2dzLmNvbS9jbmJsb2dzX2NvbS93ZWJhYmNkLzgyNjY3L29fSXRlcmF0b3IucG5n.png?w=700&webp=1)
MessageModel
ICollection
Collection
IIterator
Iterator
Test
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Data;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Configuration;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Collections;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Web;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Web.Security;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Web.UI;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Web.UI.WebControls;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Web.UI.WebControls.WebParts;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using System.Web.UI.HtmlControls;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
using I = Pattern.Iterator;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Ob25lLmdpZg%3D%3D.gif?w=700&webp=1)
public partial class Iterator : System.Web.UI.Page
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9FeHBhbmRlZEJsb2NrU3RhcnQuZ2lm.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9Db250cmFjdGVkQmxvY2suZ2lm.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvZG90LmdpZg%3D%3D.gif?w=700&webp=1)
{
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
protected void Page_Load(object sender, EventArgs e)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9FeHBhbmRlZFN1YkJsb2NrU3RhcnQuZ2lm.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvZG90LmdpZg%3D%3D.gif?w=700&webp=1)
{
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
I::Collection collection = new I::Collection();
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第1条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第2条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第3条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第4条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第5条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第6条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第7条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第8条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
collection[] = new I::MessageModel("第9条信息", DateTime.Now);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
I::Iterator iterator = new I::Iterator(collection);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
iterator.Step ;
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
for (I::MessageModel mm = iterator.First(); !iterator.IsDone; mm = iterator.Next())
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9FeHBhbmRlZFN1YkJsb2NrU3RhcnQuZ2lm.gif?w=700&webp=1)
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvZG90LmdpZg%3D%3D.gif?w=700&webp=1)
{
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
Response.Write(mm.Message);
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9JbkJsb2NrLmdpZg%3D%3D.gif?w=700&webp=1)
Response.Write("<br />");
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9FeHBhbmRlZFN1YkJsb2NrRW5kLmdpZg%3D%3D.gif?w=700&webp=1)
}
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9FeHBhbmRlZFN1YkJsb2NrRW5kLmdpZg%3D%3D.gif?w=700&webp=1)
}
![乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)](https://image.shishitao.com:8440/aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9JbWFnZXMvT3V0bGluaW5nSW5kaWNhdG9ycy9FeHBhbmRlZEJsb2NrRW5kLmdpZg%3D%3D.gif?w=700&webp=1)
}
运行结果
第1条信息
第3条信息
第5条信息
第7条信息
第9条信息
参考
http://www.dofactory.com/Patterns/PatternIterator.aspx
OK
[源码下载]