您的位置:首页 > 编程语言

迭代器模式(Iterator Pattern)部分代码

2007-11-20 12:20 405 查看
摘自TerryLee's Blog

URL:/article/4583464.html

public interface IList

{

IIterator GetIIterator();

}

public interface IIterator

{

bool MoveNext();

object CurrentItem();

void First();

void Next();

}

class ConcreateList : IList

{

int[] list;

public ConcreateList()

{

list = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

}

//实现接口方法

public IIterator GetIIterator()

{

return new ConcreteIterator(this);

}

public int Length

{

get { return list.Length; }

}

public int GetElement(int index)

{

return list[index];

}

}

class ConcreteIterator : IIterator

{

//声明聚集

private ConcreateList list;

//声明索引

private int index;

public ConcreteIterator(ConcreateList lst)

{

this.list = lst;

this.index = 0;

}

/// <summary>

/// 表示是否可以向后移动

/// </summary>

/// <returns>bool true:表示可以移动</returns>

public bool MoveNext()

{

if (index < list.Length)

{

return true;

}

else

{

return false;

}

}

public object CurrentItem()

{

return list.GetElement(index);

}

public void First()

{

index = 0;

}

public void Next()

{

if (index < list.Length)

{

index++;

}

}

}

class App

{

public static void Main()

{

//实例化聚集

IList lst = new ConcreateList();

IIterator iteraotr = lst.GetIIterator();

while (iteraotr.MoveNext())

{

int i = (int)iteraotr.CurrentItem();

System.Console.WriteLine(i.ToString());

iteraotr.Next();

}

System.Console.ReadLine();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: