迭代器模式学习和理解
来源:互联网 发布:淘宝实名认证怎么弄 编辑:程序博客网 时间:2024/06/16 09:18
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。
构成:
(1)迭代器角色(Iterator):定义遍历元素所需要的方法,一般来说会有这么三个方法:取得下一个元素的方法next(),判断是否遍历结束的方法hasNext()),移出当前对象的方法remove(),
(2)具体迭代器角色(Concrete Iterator):实现迭代器接口中定义的方法,完成集合的迭代。
(3)容器角色(Aggregate): 一般是一个接口,提供一个iterator()方法,例如java中的Collection接口,List接口,Set接口等
(4)具体容器角色(ConcreteAggregate):就是抽象容器的具体实现类,比如List接口的有序列表实现ArrayList,List接口的链表实现LinkList,Set接口的哈希列表的实现HashSet等。
理解:其实就是为不同的容器提供一种统一的遍历方法。首先必须注意的是,需要面向接口编程。
举个例子,假如有两种方式实现列表,一种是数组形式,一种是链表形式。首先定义一个List的接口Collection,让两种方式所使用的类都继承Collection,接口中有列表的add()方法,size()方法等。那遍历方法呢?两种方法的具体实现不一样啊,于是我们把遍历相关的方法抽象出来一个接口叫Iterator,包括hasNext()、next()、remove()等。在以上两种方式的类中分别定义一个返回Iterator类型的方法,此时也是面向接口编程的体现,两种类分别实现此方法。这样在用户使用不同实现的时候,调用的接口名称一样。
思考:为什么要费尽周折搞一个Iterator呢,还不如把Iterator中的方法直接放到Collection中呢?其实啊,也考虑了单一性原则,不能所有的功能都放在一个接口中啊,要不然一个接口的东西太多,知道的越多就会死的越快。不同的功能接口还是需要封装的。
- 迭代器模式学习和理解
- 策略模式学习和理解
- 模式学习的自我理解和疑惑(1)
- Java EE核心模式学习理解和记录
- Java EE核心模式学习理解和记录
- Android学习之浅谈对MVC模式和MVP模式的理解
- 工厂模式学习个人理解
- MVC设计模式学习理解
- 理解MVC模式和MVVM
- Block学习和理解
- 命令模式和状态模式的理解
- 理解大端模式和小端模式
- 代理模式和装饰模式的理解
- 理解用户模式和内核模式(译)
- 【OC学习-29】单例设计模式的理解、案例和简单总结
- Java Web MVC模式个人学习理解
- 软件设计模式(概念理解学习)
- 亚马逊EC2 理解和学习
- myBatis-1
- sdnu1071
- pandas行列传播运算
- 推荐 | CVPR2017关于如何解释深度学习模型的讲座(附视频与PPT)
- 《初涉爬虫》
- 迭代器模式学习和理解
- JPA OneToMany级联更新 及 orphanRemoval = true 说明
- HDU 1418-抱歉
- 讨好型人格,有哪些错误逻辑?
- ERROR: value for column "imgfile" exceeds pagesize 1048576! (seg78 192.168.2.7:40000 pid=487967)
- winform判断窗体是否已打开
- 一维数组的创建及使用
- NDK在android studio里的位置
- docker 问题集