原文:乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
[索引页][源码下载]
乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
作者:webabcd
介绍
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
示例
有一个Message实体类,某聚合对象内的各个元素均为该实体对象,现在要提供一种方法顺序地访问这个聚合对象中的各个元素。

MessageModel
ICollection
Collection
IIterator
Iterator
Test

using System;

using System.Data;

using System.Configuration;

using System.Collections;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;


using I = Pattern.Iterator;


public partial class Iterator : System.Web.UI.Page



{

protected void Page_Load(object sender, EventArgs e)


{

I::Collection collection = new I::Collection();


collection[] = new I::MessageModel("第1条信息", DateTime.Now);

collection[] = new I::MessageModel("第2条信息", DateTime.Now);

collection[] = new I::MessageModel("第3条信息", DateTime.Now);

collection[] = new I::MessageModel("第4条信息", DateTime.Now);

collection[] = new I::MessageModel("第5条信息", DateTime.Now);

collection[] = new I::MessageModel("第6条信息", DateTime.Now);

collection[] = new I::MessageModel("第7条信息", DateTime.Now);

collection[] = new I::MessageModel("第8条信息", DateTime.Now);

collection[] = new I::MessageModel("第9条信息", DateTime.Now);


I::Iterator iterator = new I::Iterator(collection);


iterator.Step ;


for (I::MessageModel mm = iterator.First(); !iterator.IsDone; mm = iterator.Next())


{

Response.Write(mm.Message);

Response.Write("<br />");

}

}

}
运行结果
第1条信息
第3条信息
第5条信息
第7条信息
第9条信息
参考
http://www.dofactory.com/Patterns/PatternIterator.aspx
OK
[源码下载]