【寒江雪】Go实现迭代器模式
2018-03-23 00:50
274 查看
Iterator Pattern
迭代器模式可以把对象的访问方式给封装出来,只需要给某种数据结构实现自己的迭代器,用户只需要拿到迭代器就可以轻易操作该数据结构,而不需要在乎底层实现。实现
封装一个容器package iterator import "container/list" type Container interface{ Iterator()Iterator } type List struct{ list list.List } func (this *List)Iterator()Iterator{ return &ListIterator{this.list.Front(),this.list.Back()} } func (this *List)Add(value interface{}){ this.list.PushBack(value) }
为容器实现迭代器
package iterator import ( "container/list" ) type Iterator interface{ HasNext()bool Value()interface{} Next() } type ListIterator struct { cur *list.Element end *list.Element } func (this *ListIterator)HasNext()bool{ return this.cur != this.end } func (this *ListIterator)Next(){ this.cur=this.cur.Next() } func (this *ListIterator)Value()interface{}{ return this.cur.Value }
main.go
package main import ( "projects/DesignPatternsByGo/behavioralPatterns/iterator" "fmt" ) func main() { l := iterator.List{} l.Add(1) l.Add(2) l.Add(3) l.Add(4) i := l.Iterator() for i.HasNext(){ x := i.Value().(int) fmt.Println(x) i.Next() } }
有钱的捧个钱场,没钱的捧个人场。
出来混不容易。
相关文章推荐
- 【寒江雪】Go实现命令模式
- 【寒江雪】Go实现策略模式
- 【寒江雪】Go实现组合模式
- 【寒江雪】Go实现外观模式
- 【寒江雪】Go实现责任链模式
- 【寒江雪】Go实现中介者模式
- 【寒江雪】Go实现备忘录
- 【寒江雪】Go实现Builder Pattern
- 【寒江雪】Go实现代理模式
- 【寒江雪】Go实现单例模式
- 【寒江雪】Go实现模版方法模式
- 【寒江雪】Go实现状态模式
- 【寒江雪】Go实现对象池模式
- 【寒江雪】Go实现装饰者模式
- 【寒江雪】Go实现桥接模式
- 【寒江雪】Go实现工厂模式
- 【寒江雪】Go实现观察者模式
- go语言实现区块链
- Go语言如何实现遗传算法
- 对jsp的一个小结(6)实现分页查询、GO跳转