c#设计模式之迭代器模式
2017-07-11 16:19
351 查看
迭代器模式()Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示
using System;
public interface IIterator
{
bool MoveNext();
Object CurrentItem();
void First();
void Next();
}
public interface IList
{
IIterator GetIterator();
}
public class ConcreteIterator : IIterator
{
private ConcreteList list;
private int index;
public ConcreteIterator(ConcreteList list)
{
this.list = list;
index = 0;
}
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;
}
}
}
public class ConcreteList : IList
{
int[] list;
public ConcreteList()
{
list = new int[] { 1, 2, 3, 4, 5 };
}
public IIterator GetIterator()
{
return new ConcreteIterator(this);
}
public int Length
{
get { return list.Length; }
}
public int GetElement(int index)
{
return list[index];
}
}
class Program
{
static void Main(string[] args)
{
IList list = new ConcreteList();
IIterator iterator = list.GetIterator();
while (iterator.MoveNext())
{
int i = (int)iterator.CurrentItem();
Console.WriteLine(i.ToString());
iterator.Next();
}
Console.ReadKey();
}
}
using System;
public interface IIterator
{
bool MoveNext();
Object CurrentItem();
void First();
void Next();
}
public interface IList
{
IIterator GetIterator();
}
public class ConcreteIterator : IIterator
{
private ConcreteList list;
private int index;
public ConcreteIterator(ConcreteList list)
{
this.list = list;
index = 0;
}
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;
}
}
}
public class ConcreteList : IList
{
int[] list;
public ConcreteList()
{
list = new int[] { 1, 2, 3, 4, 5 };
}
public IIterator GetIterator()
{
return new ConcreteIterator(this);
}
public int Length
{
get { return list.Length; }
}
public int GetElement(int index)
{
return list[index];
}
}
class Program
{
static void Main(string[] args)
{
IList list = new ConcreteList();
IIterator iterator = list.GetIterator();
while (iterator.MoveNext())
{
int i = (int)iterator.CurrentItem();
Console.WriteLine(i.ToString());
iterator.Next();
}
Console.ReadKey();
}
}
相关文章推荐
- C#设计模式之迭代器模式示例代码
- C#面向对象模式设计第十八讲:Iterator 迭代器模式(行为型模式)
- c#设计模式系列:迭代器模式(Iterator)
- [导入]C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式.zip(8.04 MB)
- 【C#设计模式-迭代器模式】
- [C# 设计模式] Iterator - 迭代器模式:我与一份奥利奥早餐的故事
- C#设计模式——迭代器模式(Iterator Pattern)
- C#设计模式(16)——迭代器模式(Iterator Pattern)
- 设计模式(C#)之迭代器模式(Iterator Pattern)
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
- 设计模式(C#)之迭代器模式(Iterator Pattern)
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
- C#设计模式系列:迭代器模式(Iterator)
- 201802191355->深入浅出设计模式:c#迭代器模式
- C#设计模式——迭代器模式(Iterator Pattern)
- C#设计模式--迭代器模式
- C#设计模式(16)——迭代器模式(Iterator Pattern)
- C#设计模式之17——迭代器模式
- 《模式——工程化实现及扩展》(设计模式C# 版)《迭代器模式 Iterator》——“自我检验" 参考答案
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)