设计模式——迭代器模式
当我们说“集合(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从头带你走过没有内置迭代器的日子,谢谢。
文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_40763897/article/details/88846526
- 点赞
- 收藏
- 关注作者
评论(0)