迭代器模式(只描述基础)

1.定义

  提供一种方法顺序访问一个聚合对象内部的各个元素,而又不暴露该对象的内部表示。

2.使用场合及理解

  当你需要访问一个聚集对象,而且不管这些对象是什么,都需要遍历的时候,你就应该考虑使用迭代器模式;可以这么说,当你对聚集有多重方式遍历时,考虑使用迭代器;迭代器模式为遍历不同的聚集结构提供开始、下一个、是否结束、获取当前项等统一的接口。

  总的来说,迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器来负责,这样既可以做到不暴露集合的内部结构,又可以让外部代码透明的访问集合内部的数据。

3.迭代器在高级语言内的封装

  迭代器模式在访问数组、集合、列表、等数据,尤其是数据库操作时,是非常普遍的应用。但正因为它太普遍了,所以现在各种高级语言都对它进行了封装,不需要自己再去理解,而是直接使用框架内封装的迭代器来实现就可以了。

  以.NET框架来说,它已经为我们封装好了相关接口,我们只需要实现这些接口就可以实现迭代器模式:IEumerator接口:支持对非泛型集合的简单迭代接口;IEnumerable接口:公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。(对于适用于泛型集合的迭代器,实际上是继承了非泛型的接口,然后做进一步封装实现)。

4.使用(偷懒)

  由于当前我们使用的Java、C#、C++等高级语言已经封装好了迭代器,并且一些常用集合比如ArrayList、List等都已经实现了相关接口,因此我们可以直接使用而没必要在自己去针对集合创建迭代器。因此我认为我们只需要对其原理有所了解,然后能够正确使用不同的框架给我们封装好的接口就可以了(是不是有点偷懒<( ̄︶ ̄)>)。

原文地址:https://www.cnblogs.com/qingtian-jlj/p/5990376.html