设计模式--迭代器(Iterator)模式
2021/7/27 6:07:56
本文主要是介绍设计模式--迭代器(Iterator)模式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模式定义
提供一中方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示
类图
要点总结
- 迭代抽象:访问一个聚合对象的内部而无需暴露它的内部表示
- 迭代多态:为遍历不同的集合结构提供一个统一的接口,从而支持同样的算法在不同的集合结构上进行操作
- 迭代器的健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题
Go语言代码实现
工程目录
iterator.go
package Iterator type Iterator interface { Index() int Value() interface{} HasNext() bool Next() } 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 Iterator import ( "fmt" "testing" ) func TestArrayIterator(t *testing.T) { array := []interface{}{1,3,9,2,8,7} a := 0 iterator := 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)模式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19JAVA分布式id教程:轻松入门与实践
- 2024-11-19Java高并发教程:入门与实践指南
- 2024-11-19JAVA高并发直播教程:新手入门指南
- 2024-11-19Java高并发直播教程:入门与实践指南
- 2024-11-19Java微服务教程:初学者快速入门指南
- 2024-11-19JAVA微服务教程:新手入门的详细指南
- 2024-11-19Java微服务教程:从零开始搭建你的第一个微服务应用
- 2024-11-19Java项目开发教程:初学者必备指南
- 2024-11-19Java项目开发教程:新手快速入门指南
- 2024-11-19Java项目开发教程:零基础入门到实战