代码改变世界

17.迭代器模式

2019-08-16 14:31  zhongj  阅读(98)  评论(0编辑  收藏  举报
  • 一、角色
    • 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口
    • 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例
    • 抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext()、first()、next() 等方法
    • 具体迭代器(Concretelterator)角色:实现抽象迭代器接口中所定义的方法,完成对聚合对象的遍历,记录遍历的当前位置
  • 二、适用场景
    • 访问一个聚合对象的内容而无须暴露它的内部表示
  • 三、实例
    • 图1是名字聚合对象的例子,其中Container是抽象聚合类,NameRepository是具体的聚合类,Iterator是抽象迭代器类,NameIterator是具体迭代器类,NameRepository中提供getIterator方法获取迭代器,然后通过获取到的迭代器对NameRepository聚合类中的名称集合进行方和遍历
    • 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/iterator
    图-1