模式定义

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

类图

要点总结

  • 迭代抽象:访问一个聚合对象的内部而无需暴露它的内部表示
  • 迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作
  • 迭代器的健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题

Go语言代码实现

工程目录

iterator.go

package Iteratortype Iterator interface {Index() intValue() interface{}HasNext() boolNext()
}type ArrayIterator struct {array []interface{}index *int
}func (a *ArrayIterator) Index() *int{return a.index
}func (a *ArrayIterator) Value() interface{} {return a.array[*a.index]
}func (a *ArrayIterator) HasNext() bool {return *a.index + 1 <= len(a.array)
}func (a *ArrayIterator) Next() {if a.HasNext(){*a.index++}
}

iterator_test.go

package Iteratorimport ("fmt""testing"
)func TestArrayIterator(t *testing.T) {array := []interface{}{1,3,9,2,8,7}a := 0iterator := ArrayIterator{array: array, index: &a}for it := iterator; iterator.HasNext(); iterator.Next(){index, value := it.Index(), it.Value().(int)for value != array[*index]{fmt.Println("error")}fmt.Println(*index, value)}
}

设计模式--迭代器(Iterator)模式相关推荐

  1. 设计模式学习笔记——迭代器(Iterator)模式

    设计模式学习笔记--迭代器(Iterator)模式 @(设计模式)[设计模式, 迭代器模式, iterator, 迭代器] 设计模式学习笔记迭代器Iterator模式 基本介绍 迭代器案例 类图 实现 ...

  2. C++之迭代器(Iterator)模式

    0. 简介 迭代器模式是一种行为设计模式, 它可以有效管理数据流动的同时,让用户能在不暴露集合底层表现形式 (列表. 栈和树等) 的情况下遍历集合中所有的元素. 迭代器通常会提供一个获取集合元素的基本 ...

  3. 图解设计模式(1) Iterator 模式

    实际问题:书架上有很多书,现在要迭代每本书. client端: 最终模式为:

  4. 设计模式——Iterator模式实现研究

    导读:软件设计模式是一种表达.记录和重用软件设计结构和设计经验的新方法,它对反复出现的设计结构的关键特征进行识别.抽象和命名,使重用成功设计和结构更加容易.本文介绍了软件设计模式的特点.描述方式以及在 ...

  5. 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手

    一.你在开发中使用过迭代吗?      当你在使用JavaScript开发客户端应用的时候使用过for...in吗?  1<script type="text/javascript&q ...

  6. Java设计模式 (1) —— Iterator迭代器模式

    拿到这个话题,首先搞清楚:什么是迭代器? 大家都学过 for-i 循环,for-i循环的本质就是 通过i++ 或者 i-- ,以实现 从数据的一端 一个一个地遍历数据元素,直到另一端的最后一个元素,将 ...

  7. 设计模式 - 迭代器模式(iterator pattern) 具体解释

    迭代器模式(iterator pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一 ...

  8. Java设计模式(访问者模式-迭代器模式-观察者模式-中介者模式)

    Java设计模式Ⅶ 1.访问者模式 1.1 访问者模式概述 1.2 代码理解 2.迭代器模式 2.1 迭代器模式概述 2.2 代码理解 3.观察者模式 3.1 观察者模式概述 3.2 代码理解 4.中 ...

  9. [Head First设计模式]生活中学设计模式——迭代器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

最新文章

  1. Python中bitmap数据结构的构造和使用
  2. python学习笔记-5.18
  3. 男性护肤热潮难以孕育下一个“完美日记”?
  4. ZOJ 3985 2017CCPC秦皇岛 E:String of CCPC
  5. 用Android Studio做一个超好玩的拼图游戏,附送超详细注释的源码
  6. 那些年出现的遇到的 错误 VS (长期)
  7. Spring的9种设计模式(二)
  8. java向上取整和向下取整,万字长文!
  9. sd卡烧写linux内核,linux下怎样烧写sd卡
  10. 电脑问题处理篇5:解决电脑突然蓝屏问题
  11. 游戏数据库 TcaplusDB
  12. PDF压缩文件怎么压缩最小?用迅读PDF大师,一键无损压缩
  13. 华三模拟器中的remote实现简单组网
  14. 入门级node+uni-app开发即时通讯聊天室(3)用户的搜索以及好友添加(二)
  15. 基于DragonBoard 410c android系统实现红外遥控功能
  16. 金字塔型自动化的利弊
  17. 微信小程序学习和实践总结
  18. 计算机基础及photoshop应用试题,计算机基础及Photoshop应用选择题(计算机一级B考试卷).doc...
  19. Mott-insulator transitions in BEC
  20. 超分文章记录 SRCNN-FSRCNN-ESPCN-VDCN-DRCN-RDN-LapSRN-SRDenseNet-SRGAN

热门文章

  1. python如何将生成的随机数存入文件中_用python在excel中读取与生成随机数写入excel中...
  2. 在win8上配置网站服务器,win8怎么配置web服务器地址
  3. 运维人员 | 需要了解的数据中心的网络威胁
  4. 综合布线管理系统之智能配线架的过去与将来
  5. “冷热通道气流遏制系统”在数据中心机房中的应用
  6. html的input不可编辑状态,HTML中让表单input不可编辑的方法
  7. php 登陆 才能查看,WordPress登录后才能查看网站内容,未登录跳转登录页面教程...
  8. 成功解决./nvidia-installer: invalid option: ‐‐no‐opengl‐files ERROR: Invalid commandline, please run `
  9. 成功解决 .Quit() File COMObject InternetExplorer.Application, line 2, in Quit pywintypes.com_error
  10. BZOJ3569: DZY Loves Chinese II(线性基构造)