迭代器模式
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
IDataObject dataobject = new DataObject();
Iterator iterator = dataobject.GetInterator();
while (iterator.MoveNext())
{
Console.WriteLine(iterator.GetCurrent());
iterator.Next();
}
Console.ReadKey();
}
}
public interface Iterator
{
bool MoveNext();
object GetCurrent();
void Next();
void Reset();
}
public class ConcreteIterator : Iterator
{
private IDataObject _dataObject;
private int _index;
public ConcreteIterator(IDataObject dataObject)
{
_dataObject = dataObject;
_index = 0;
}
public object GetCurrent()
{
return _dataObject.GetElement(_index);
}
public bool MoveNext()
{
if (_index < _dataObject.GetLength())
{
return true;
}
return false;
}
public void Next()
{
if (_index < _dataObject.GetLength())
{
_index++;
}
}
public void Reset()
{
_index = 0;
}
}
public interface IDataObject
{
Iterator GetInterator();
int GetLength();
int GetElement(int index);
}
public class DataObject : IDataObject
{
int[] _dataArray;
public DataObject()
{
_dataArray = new int[] { 2, 4, 6, 8 };
}
public int GetElement(int index)
{
return _dataArray[index];
}
public Iterator GetInterator()
{
return new ConcreteIterator(this);
}
public int GetLength()
{
return _dataArray.Length;
}
}
}

浙公网安备 33010602011771号