设计模式连更(4)-迭代器模式

97 阅读2分钟

迭代器模式

概述

迭代器模式是一种行为设计模式,让你在不暴露集合底层表现形式的情况下遍历集合中所有的元素

iterator-zh.png

主要思想

迭代器模式的主要思想是将集合的遍历行为抽取为单独的迭代器对象

所有迭代器必须实现相同的接口,这样一来,只要由合适的迭代器,客户端代码就能兼容给任何类型的集合或遍历算法

适用场景

  1. 当集合背后为复杂的数据结构,且你希望对客户端隐藏其复杂性时(出于使用便利性或者安全性的考虑),可以使用迭代器模式

    迭代器封装了与复杂数据结构进行交互的细节,为客户端提供多个访问集合元素的简单方法。这种方式不仅对客户端来说非常方便,而且能避免客户端在直接与几乎交互时执行错误或有害的操作,从而起到保护集合的作用

  2. 使用该模式可以减少程序中重复的遍历代码

    重要迭代算法的代码往往体积非常庞大。当这些代码被放置在程序业务逻辑中时,它会让原始代码的职责模糊不清,降低其可维护性.将遍历代码移到迭代器中可以让代码更加简洁

  3. 如果你希望代码能够遍历不同的甚至是无法预知的数据结构,可以使用迭代器模式

    该模式提供了一些通用接口,可以在代码中使用这些接口

实现方式

  1. 声明迭代器接口,该接口必须提供至少一个方法来获取集合中的下一个元素
  2. 生命集合接口,并描述一个获取迭代器的方法,返回值必须是迭代器接口
  3. 为希望使用迭代器进行遍历的集合实现具体迭代器类
  4. 在你的集合类型实现集合接口
  5. 检查客户端代码,使用迭代器替代所有集合遍历代码

迭代器模式的优缺点

优点

  1. 单一职责原则
  2. 开闭原则
  3. 可以并行的遍历同意集合
  4. 可以暂停遍历并在需要时继续

缺点

  1. 如果你的程序只是和简单的集合交互,这就没必要使用了,反而会矫枉过正
  2. 对于某些集合,可能迭代器效率比直接遍历要低