
<span style="font-size:18px;">abstract class Aggregate
    {
        public abstract Iterator CreateIterator();
    }</span><span style="font-size:18px;">  abstract class Aggregate
    {
        public abstract Iterator CreateIterator();
    }</span><span style="font-size:18px;">class ConcreteIterator : Iterator
    {
        private ConcreteAggregate aggregate;             //定义了一个具体聚集对象
           int current = 0;
          public ConcreteIterator(ConcreteAggregate aggregate)
          {
              this.aggregate = aggregate;          //初始化时将具体的聚集对象传入
          }
          public override object First()
          {
              return aggregate[0];                //得到聚集的第一个对象
          }
          public override object Next()
          {
              object ret = null;
              current++;
              if (current < aggregate.count)
              {
                  ret = aggregate[current];
              }
              return ret;
          }
          public override bool IsDone()
          {
              return current >= aggregate.count  ? true : false;
          }
          public override object CurrentItem()
          {
              return aggregate[current];                //返回当前的聚集对象
          }
    }</span><span style="font-size:18px;">class ConcreteAggregate:Aggregate
    {
        private IList<object> items = new List<object>();
        public override Iterator CreateIterator()
        {
            return new ConcreteIterator(this);
        }
        public int count
        {
            get { return items.Count; }           //返回聚集总个数
        }
        public object this[int index]
        {
            get { return items[index]; }
            set { items.Insert(index, value); }          //声明一个索引器
        }
    }  </span><span style="font-size:18px;">static void Main(string[] args)
        {
            ConcreteAggregate a = new ConcreteAggregate();
            a[0] = "我";
            a[1] = "大爷";
            a[2] = "行李";
            Iterator i = new ConcreteIterator(a);
            object item = i.First();
            while (!i.IsDone())
            {
                Console.WriteLine("{0}请买车票!", i.CurrentItem());
                i.Next();
            }
            Console.Read();
        }
    }</span>版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/qwlzxx/article/details/46610145