定义:提供一种顺序访问集合的方法,而不暴露集合内部的表示
顺序访问,one by one(挨个访问),不暴露集合内部表示,反映了面向对象程序中的封装性。可以这么理解,一组模特从后台出场,一个接着一个,但是先出场的模特,未必是站在最前面的模特。换句话说,对于观众,你不知道后台模特的特定位置。为什么是顺序访问呢?因为迭代器模式采用的输出机制是内部决定好的,你无法决定。不像字典类型,我传不同的key,可以访问不同的value。我们访问列表,可以直接访问第i个元素,但是迭代器,你想要访问下一个元素,必须把当前的元素访问过后,才能到下一个元素。
二、c#中的迭代器接口
迭代器接口,可以手动实现调用,如下:
1 public class MyIEnumerator : IEnumerator<string> 2 { 3 string[] types = { "下等马", "上等马", "中等马" }; 4 5 int cur = -1; 6 public string Current 7 { 8 get 9 { 10 return types[cur]; 11 } 12 } 13 object IEnumerator.Current 14 { 15 get 16 { 17 return this.Current; 18 } 19 } 20 21 public void Dispose() 22 { 23 } 24 25 public bool MoveNext() 26 { 27 if (cur < types.Length - 1) 28 { 29 cur++; 30 return true; 31 } 32 return false; 33 } 34 35 public void Reset() 36 { 37 cur = -1; 38 } 39 }