java迭代器模式
2015-08-24 09:07
288 查看
模式定义
提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。
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、迭代器提供了一个通用的接口,让我们遍历聚合的项,放我们编码使用聚合项时,就可以使用多态机制。
相关文章推荐
- 基于注解的 Spring MVC 简单入门
- Java中Overload和Override的区别
- netbeans 窗体字体大小设置
- netbeans 窗体字体大小设置
- 在Java编程中使用正则表达式
- android studio项目修改eclipse可以使用的项目
- spring mvc环境搭建demo
- Java运行时多态性:继承和接口的实现
- java中getClass( )和class()的联系和区别
- java多线程(四)synchronized关键字修饰方法
- eclipse中新建jsp页面出错怎么解决
- Java中的数组
- 详细解释 集成Maven Spring Mybatis项目包生成Bat文件
- 从零开始学java 之 DVD的增删改查管理系统(方法,界面,数据库相分离)用IO流写入文件代替数据库
- java 中通过label跳出双重for 循环
- java 中通过label跳出双重for 循环
- Maven + (Spring + Hibernate) Annotation + MySql Example
- Maven + Spring + Hibernate + MySql Example
- Spring Named Parameters examples in SimpleJdbcTemplate
- Spring SimpleJdbcTemplate batchUpdate() example