java迭代器模式
来源:互联网 发布:java ftp 文件排序 编辑:程序博客网 时间:2024/06/05 08:33
模式定义
提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
UML类图
例:
interface Iterator{ Object First(); Object Next(); boolean IsDone(); Object CurrentItem();}abstract class Aggregate{ abstract Iterator CreateIterator();}class ConcreteIterator implements Iterator{ private List<Object> list = new ArrayList<Object>(); private int curr=0; public ConcreteIterator(List<Object> list){ this.list = list; } public Object First(){ return list.get(0); } public Object Next(){ Object ret = null; curr++; if(curr < list.size()){ ret = list.get(curr); } return ret; } public boolean IsDone(){ return curr>=list.size()?true:false; } public Object CurrentItem(){ return list.get(curr); }}class ConcreteAggregate extends Aggregate{ private List<Object> list = new ArrayList<Object>(); public ConcreteAggregate(List<Object> list){ this.list = list; } public Iterator CreateIterator(){ return new ConcreteIterator(list); }}class client{ public static void main(String[] args){ List<Object> list = new ArrayList<Object>(); list.add("miner"); list.add("any"); Aggregate agg = new ConcreteAggregate(list); Iterator iterator = agg.CreateIterator(); iterator.First(); while(!iterator.IsDone()){ System.out.println(iterator.CurrentItem()); iterator.Next(); } }}
模式总结
1、迭代器模式提供一种方法来访问聚合对象,而不用暴露这个对象的内部表示。
2、将遍历聚合对象中数据的行为提取出来,封装到一个迭代器中,通过专门的迭代器来遍历聚合对象的内部数据,这就是迭代器模式的本质。迭代器模式是“单一职责原则”的完美体现。
3、当使用迭代器的时候,我们依赖聚合提供遍历。
4、迭代器提供了一个通用的接口,让我们遍历聚合的项,放我们编码使用聚合项时,就可以使用多态机制。
0 0
- Java模式 - 迭代器模式(Iterator)
- java设计模式---迭代器模式
- java设计模式---迭代器模式
- Java设计模式--迭代器模式
- Java设计模式--迭代器模式
- JAVA设计模式--迭代器模式
- java设计模式-------迭代器模式
- 【Java设计模式】- 迭代器模式
- JAVA 设计模式 迭代器模式
- Java设计模式-迭代器模式
- java 行为模式 迭代器模式
- java 迭代器模式
- Java迭代器模式
- java 迭代器模式
- java 迭代器模式
- Java 迭代器模式
- java迭代器模式
- java迭代器模式
- 2047 阿牛的EOF牛肉串【递推】
- SpringMVC-请求转发和重定向
- vsftpd配置文件详解
- VMP1.8的IAT分析,同时膜拜一下Nooby大牛
- AndroidAnnotations eclipse中代码无错 项目出现红叉无法调试编译
- java迭代器模式
- 简单搭建nodeJS服务,访问本地站点文件
- [周赛] HDU-5056 Boring count
- HDOJ 5137 How Many Maos Does the Guanxi Worth(最短路删点)
- netbeans 窗体字体大小设置
- Java运行时多态性:继承和接口的实现
- NSAttributedString编程
- spring mvc环境搭建demo
- SIFT相关参考资料