设计模式——迭代器模式

网友投稿 798 2022-10-24

设计模式——迭代器模式

设计模式——迭代器模式

当我们说“集合(collection)”的时候,我们指的是一群对象。其存储方式是各式各样的数据结构,如列表、数组、散列表,无论用什么方式存储,一律可以视为集合。

迭代器模式定义

提供一种方法顺序访问一个集合对象的各个元素,而又不暴露其内部的表示。

这个模式给我们提供了一种方法,可以顺序访问一个集合对象中的元素,而又不用知道内部是如何表示的。

类图:

Iterator是所有迭代器都必须实现的接口,Java中也提供了Iterator接口,如果不想用Java提供的,自己设计一个也是可以的。在这里我自己设计了一个迭代器接口,里面有方法hasMore()、next()。

ConcreteIterator是具体的迭代器,负责管理目前遍历的位置。

Aggregate有一个共同的接口供所有的集合使用,这对客户代码是很方便的,将客户代码从集合对象的实现中解耦了。

ConcreteAggregate这是一个具体的持有一个对象的集合,并实现一个方法,利用此方法返回集合的迭代器。

像ArrayList、Vector、LinkedList、Stack、PriorityQueue这些类都实现了java.util.Collection接口。而每个Collection都知道如何创建自己的iterator。如ArrayList上的iterator()方法就可以返回一个具体的Iterator,而你根本不需要去知道它到底做了什么,只要使用Iterator接口就可以了。

使用迭代器可以让你很方便地遍历对象。这一点我觉得没有太多人有同感,因为java在很多集合类上都内置实现了迭代器设计模式,大家用得很多,没有对比过没有迭代器的情况,自然也没有什么感觉了。下面这个demo从头带你走过没有内置迭代器的日子,谢谢。

​​迭代器设计模式的demo已上传GitHub,欢迎-学习​​。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:AKjs.Mobile 移动端前端UI框架- AKjs.Mobile v 1.5.7
下一篇:Virtualview-Android- 动态化高性能的 UI 框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~