Golang设计模式——07迭代器模式

简介: Golang设计模式——07迭代器模式

迭代器模式

提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。

优点

  1. 可以提供多种遍历方式,比如说对有序列表,我们可以根据需要提供正序遍历,倒序遍历两种迭代器,用户用起来只需要得到我们实现好的迭代器,就可以方便的对集合进行遍历了。
  2. 封装性良好,用户只需要得到迭代器就可以遍历,而对于遍历算法则不用去关心。

缺点

  1. 每个聚合对象都要一个迭代器,会生成多个迭代器不好管理类
  2. 提供一个统一的方法遍历对象,客户不用再考虑聚合的类型,使用一种方法就可以遍历对象了。

场景

  1. 迭代器模式是与集合共生共死的,一般来说,我们只要实现一个集合,就需要同时提供这个集合的迭代器,像 go的range,假如我们要实现一个这样的新的容器,当然也需要引入迭代器模式,给我们的容器实现一个迭代器。

代码

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++
  }
}
package Iterator
import (
  "fmt"
  "testing"
)
func TestArrayIterator_Value(t *testing.T) {
  array := []interface{}{6,8,7,2,5,0,3,2}
  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].(int) {
      fmt.Println("error")
    }
    fmt.Println(*index, value)
  }
}

其他设计模式

设计模式Git源代码

00简单工厂模式

01工厂方法模式

02抽象工厂模式

03外观模式

04建造者模式

05桥接模式

06命令模式

07迭代器模式

08模板模式

09访问者模式

10备忘录模式

11责任链模式

12中介模式

13原型模式

14状态模式

15策略模式

16享元模式

17组合模式

18解释器模式

19单例模式

20适配器模式

21代理模式

22装饰器模式

23观察者模式


目录
相关文章
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
54 2
|
2月前
|
设计模式 Java Kotlin
Kotlin - 改良设计模式 - 迭代器模式
Kotlin - 改良设计模式 - 迭代器模式
36 0
|
3月前
|
设计模式 Java 开发者
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。对于快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文重点介绍迭代器模式,通过具体示例展示了如何在Kotlin中实现迭代器模式,包括使用Iterator、Iterable接口及重载iterator运算符的方法。
40 4
|
3月前
|
设计模式 Java Kotlin
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
Kotlin学习笔记 - 改良设计模式 - 迭代器模式
41 2
|
3月前
|
设计模式 Java 开发者
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
本教程详细讲解了Kotlin中的迭代器模式,包括如何通过实现Iterator和Iterable接口以及重载iterator运算符来实现可遍历的自定义集合。示例展示了如何创建一个图书集类,并通过不同方式使其支持遍历操作,适合希望深入了解Kotlin迭代器模式的开发者。
41 3
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
42 1
|
3月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
32 1
|
2月前
|
设计模式 Java Kotlin
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
Kotlin教程笔记(54) - 改良设计模式 - 迭代器模式
38 0
|
4月前
|
设计模式 安全 Java
Java设计模式-迭代器模式(21)
Java设计模式-迭代器模式(21)
|
6月前
|
存储 NoSQL Go
iLogtail设计模式问题之迭代器模式是如何应用的
iLogtail设计模式问题之迭代器模式是如何应用的