如下例:

 

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);
    }
}