设计模式——迭代器模式

  
 <代码>界面迭代器
  {
  对象的第一个();
  对象Next ();
  bool结束();
  CurrentItem对象();
  }
  类myIterator:迭代器
  {
  私人MyAggragate物品;
  私人int cuttent=0;
  公共myIterator (MyAggragate _items)
  {
  项=_items;
  }
  公共CurrentItem对象()
  {
  返回项目(cuttent);
  }
  
  公共对象第一次()
  {
  返回条目[0];
  }
  
  公共bool结束()
  {
  返回cuttent>=items.Count ?真:假;
  }
  
  公共对象Next ()
  {
  cuttent + +;
  如果(cuttent祝辞=items.Count)
  返回null;
  返回项目(cuttent);
  }
  }
  
  抽象类团聚体
  {
  公共抽象迭代器CreateIterator ();
  }
  类MyAggragate:团聚体
  {
  私人IList列表=new List ();
  
  公共int数
  {
  得到
  {
  返回list.Count;
  }
  }
  公共字符串(int指数)
  {
  得到
  {
  返回列表(指数);
  }
  集
  {
  列表。插入(指数、价值);
  }
  }
  公共覆盖迭代器CreateIterator ()
  {
  返回新myIterator(这个);
  }
  }//前端
  静态void Main (string [] args)
  {
  MyAggragate=新MyAggragate ();
  一个[0]="张三”;
  一个[1]="李四”;
  一个[2]="王五”;
  一个[3]="王五2”;
  diedaiqi。迭代器我=new myIterator(一个);
  var=i.First项();
  控制台。WriteLine(“{0} 1项);
  而(! i.isDone ())
  {
  Console.WriteLine (“{0}”, i.CurrentItem ());
  i.Next ();
  }
  Console.ReadLine ();
  } 
  

总结:访问聚集对象,不管该对象是什么,需要遍历的时候,就使用迭代器。
迭代器模式:为聚集提供开始,下一个,是否结束,当前处于哪一项的统一的接口。
c#的集合什么的已经在内部实现了迭代器。
foreach(字符串项)
{
console.write(“当前{0}“,项),
}的内部实现其实是:
IEnumeratore=a.GetEnumerator ();
, (e.Next ())
{
console.write(“当前{0}“,e.Current);
}

设计模式——迭代器模式