[设计模式学习笔记]迭代器模式

迭代器模式

作用:遍历集合对象.

迭代器模式包含两部分:

  1. 容器
  • 容器接口
  • 容器实现类
  1. 容器迭代器
  • 迭代器接口
  • 迭代器实现类

设计思路和实现

  1. 迭代器中需要定义hasNext(), currentItem(), next()三个方法.
  2. 待遍历的容器对象通过依赖注入传递到迭代器类中.容器通过iterator()方法创建迭代器.(容器中定义一个iterator()方法,方法中直接返回迭代器类的对象,是一种组合的方式)

支持快照功能的迭代器

在使用迭代器的时候,存一份输入数组的当前版本. 然后基于这个当前版本去进行迭代.
如何存储这个当前版本呢?
有两种方法:

  1. 笨方法,会导致内存资源占用过多.在迭代器里创建一个新的数组,每当传入一个新数组的时候,就拷贝这个数组到新数组,然后基于新数组去进行迭代.
  2. 聪明方法,不会出现内存资源占用过多的问题.在数组类里增加两个时间戳,分别是添加元素的时间戳和删除元素的时间戳(默认是长整型,标记删除,不是真的删除).然后在迭代器里添加一个快照时间戳,记录数组传入的时间.然后在迭代的时候,判断下这个快照时间戳是否大于元素的添加时间戳以及小于元素的删除时间戳.如果满足条件,则迭代.否则不迭代.
posted @ 2022-06-08 11:05  Shengjie  阅读(23)  评论(0编辑  收藏  举报