Design Pattern -- Iterator
来源:互联网 发布:西门子plc200编程软件 编辑:程序博客网 时间:2024/06/05 10:16
就Java 开发者而言,Iterator 应该是比较容易理解的模式了。 因为用过Java 集合的人会记得有iterator() 这个函数。应用iterator() 返回Iterator 对象,然后对相应的集合元素进行操作,这就是经典的Iterator 的用法。(当然,Iteartor 还涉及另外一个模式,Factory, 这在之前已经讲过)。
在基本的Iterator 模式的定义里是这样讲的:“Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation. ” 。 这里有两点:
1。访问聚合的对象( aggregate object),比如集合
2。不暴露内部细节( exposing its underlying representation.)
基本的模式图:
对于这个模式,本身的思想似乎没有什么可说的。但是有几点具体实现还是有必要提一下:
首先是对于Java 开发者,通常可以自定义自己的集合和Iterator 来提前实现集合元素类型转换等操作。在Java 源码中,我们看到通过运用Iterator 和Factory 两种模式,开发者将特定集合类型的Iterator 在该类内作为内部类(inner class) 实现。而当我们开发自己的集合以及Iterator 时,完全也可以这么做
第二,如果自定义记集合内元素是以复合(composite )结构存在的,那么遍历的实现就会有一些复杂。这时的设计可能还要参考Composite 模式的概念。
第三,在Iterate 的过程中,必须关注Thread-Safe 的问题。通常可以通过加互斥锁,或者用Synchronized解决,比如:
synchronized(list){
...
}
(这里还有一个细节,在Java 中,如果用Iterator遍历操作集合元素,发生线程冲突而程序员没有进行处理的话,Java 会抛出ConcurrentModificationException 异常;而如果不用Iterator, 而只是for 循环,即使有线程问题存在异常也不会被抛出。)
总之,对于Java 开发者而言,Iterator 模式在大部分情况下是现成可用的。而如果要自定义进行开发,有些东西就必须小心了。
参考:
http://www.dofactory.com/Patterns/PatternIterator.aspx
http://squall.cs.ntou.edu.tw/cpp/91spring/Iterator.html
http://www.cnblogs.com/singlepine/archive/2005/10/30/265024.html
http://digi.it.sohu.com/20050508/n240036877.shtml
- Iterator Design Pattern
- Design Pattern -- Iterator
- Iterator Design Pattern
- JAVA Design Pattern--Iterator Pattern
- Design Pattern(11)-Iterator Pattern
- Design Pattern - Iterator(C#)
- Design Pattern: Iterator and Adaptor
- design pattern——iterator
- [Specical] Design Pattern - Behavioral Patterns - Iterator Pattern
- Iterator Pattern(GoF-Behavioral Design Patterns)
- Design Pattern Iterator 迭代器设计模式
- design pattern notes [7] - state,strategy,memento,mediator,and iterator
- 设计模式学习—迭代器模式(Iterator Design Pattern)
- Iterator Pattern
- Iterator Pattern
- Iterator Pattern
- Iterator Pattern
- Design Pattern学习笔记之迭代器模式和复合模式(the Iterator and Composite Pattern)
- IT高级英语词汇·Audio
- 组合下拉列表示例程序
- C语言的历史
- Hibernate中抽象化主键使用教程
- IT高级英语词汇·Video
- Design Pattern -- Iterator
- IT高级英语词汇·Video.Equipment
- 开始学习makefile
- Delphi 7.0常用函数速查手册
- IT高级英语词汇·Mainboard
- 制作WEB在线编辑器-插入HTML标签
- linux学习笔记
- 2006 TOP 10!—— Information Mgmt,Web development
- IE的快捷键