官方描述
提供一种方法顺序访问一个聚合对象中的各元素,而又无需暴露该聚合对象的内部表示。
我的理解
1、价值所在:
Iterator迭代器模式相对于其他模式显得对于要处理的问题更具体一些,它把一个聚合对象中元素访问和遍历操作从该聚合对象内部分离出去,从而提供了以下三方面的好处:
1)简化聚合类型接口
因为聚合对象不再需要直接对外提供访问和遍历自己内部元素的服务,所以简化了聚合对象类型的接口;
2)便于提供多种类型的迭代算法
我们可以很方便地通过提供多种迭代器,以对聚合对象进行不同形式的访问和遍历,而这种扩展对聚合对象本身不产生影响;
3)可以对聚合对象同时进行多个遍历
对于一个聚合对象,我们可以创建多个迭代器与其关联,这样我们就可以同时对该聚合对象进行多个遍历操作;
2、迭代器与聚合类的关系
由于迭代器是将本属于聚合对象的元素访问和遍历操作从聚合对象中分离,并进行独立的包装,所以迭代器和聚合对象本身是密切关联的。
迭代器在创建的时候,至少在被使用之前,必须知道它要访问的具体聚合对象,并且由于不同类型的聚合对象需要的迭代器也往往不同,所以让聚合对象创建相关联的迭代器就显得非常的自然和合情合理,通过Factory Method可以很好的实现这一点。
3、实际应用
在Java中,容器类Collection的实现即采用了Iterator模式,对于各种具体的Collection子类,如ArrayList、LinkedList、HashSet等,都具体实现了相应的Iterator子类,并通过Factory Method模式将集合类和对应的迭代器类相关联,这样既简化了集合类的设计,又便于用户使用和扩展。JDK中的集合类/迭代器类部分结构图如下:
4、备注
1)Iterator模式的结构图
2)Iterator模式参与者描述
1、Iterator(迭代器)
——迭代器定义访问和遍历元素的接口。
2、ConcreteIteratro(具体迭代器)
——具体迭代器实现迭代器的接口;
——对该聚合遍历时跟踪当前位置;
3、Aggregate(聚合)
——聚合定义创建相应迭代器对象的接口;
4、ConcreteAggregae(具体聚合类)
——具体聚合实现创建相应迭代器的接口,该操作返回ConcreteIterator的一个适当的实例
5、参考资料
GOF《设计模式——可复用面向对象软件的基础》
分享到:
相关推荐
GOF 设计模式 中文 高清 经典书籍 值得拥有 带目录 适合进阶
GOF23种经典设计模式中文版 学习设计模式的必备书籍
学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料学习设计模式好的资料
GOF设计模式(中英文双语) GOF设计模式(中英文双语) GOF设计模式(中英文双语)
GoF 23种设计模式学习笔记
GOF设计模式中英文+设计模式精解中英文,一共四个文档,高清版
GoF设计模式Java版 大神整理的很好的学习书籍
设计模式学习笔记,分析了GOF的23种模式和类设计的原则
GOF23设计模式笔记,对每种模式的使用场景、结构进行描述
找了很久的GoF设计模式的中文版、有需要的朋友可以下载
GOF设计模式双语版(设计模式经典之作),带你走进设计模式的殿堂,编写更加优美高效的代码
很清楚的GOF设计模式中文版,大家可以下来看看。
然而学习设计模式的过程却是痛苦的,从阅读设计模式的圣经——GoF的《设计模式:可复用面向对象软件的基础》时的枯燥、苦闷、茫无头绪,到有一天突然有一种顿悟;自己去实现GoF的23中模式时候的知其然不知其所以然,...
懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 设计模式体现的是一种思想,而思想则是指导行为的一切,理解和掌握了设计模式,并不...
GOF23设计模式大全 java
自己学习整理的设计模式源码,一共22个有源码 其中一个解释器模式不常用,暂时没必要看,都是自己手动编写和调试通过的,供想要学习设计模式的同学下载学习,每个模式均有先关说明和注释
java gof设计模式 是很经典的java设计模式介绍,里面详细介绍设计模式用法
Java编写的GoF设计模式源码 每一个模式都用简单的一段程序来实现 帮助理解模式
设计模式精解- GoF 23种设计模式解析附C++实现源码 懂了设计模式,你就懂了面向对象分析和设计(OOA/D)的精要。反之好像也可能成立。道可道,非常道。道不远人,设计模式亦然如此。 一直想把自己的学习经验以及在...
PDF高清教程 + 23个模式的源码 + lexi 编辑器源码 很好很强大