如下例:
public interface Collection
{
void SetArray(object[] objs);
object[] GetArray();
Iterator CreateIterator();
}
public interface Iterator
{
void First();
void Last();
void Next();
void Previous();
bool IsLast();
bool IsFirst();
object GetItem();
}
public class ConcreteIterator : Iterator
{
private object[] objs;
private int index = 0;
public ConcreteIterator(ConcreteCollection collection)
{
this.objs = collection.GetArray();
}
public void First()
{
index = 0;
}
public void Last()
{
index = objs.Length-1;
}
public void Next()
{
if (index < objs.Length)
{
index++;
}
}
public void Previous()
{
if (index > 0)
{
index--;
}
}
public bool IsLast()
{
return index == objs.Length;
}
public bool IsFirst()
{
return index == 0;
}
public object GetItem()
{
return objs[index];
}
}
public class ConcreteCollection : Collection
{
private object[] objs;
public void SetArray(object[] objs)
{
this.objs = objs;
}
public object[] GetArray()
{
return this.objs;
}
public Iterator CreateIterator()
{
return new ConcreteIterator(this);
}
}
转载于:https://blog.51cto.com/leileiaijishu/1094549