[Design Pattern] Iterator Pattern 简单案例
2024-10-11 01:00:33
Iterator Pattern,即迭代时模式,按照顺序依次遍历集合内的每一个元素,而不用了解集合的底层实现,属于行为类的设计模式。为了方便理解记忆,我也会称其为遍历模式。
下面是一个迭代器模式的简单案例。
Iterator 定义了迭代接口, 仅 hasNext 和 next 两个方法。Container 定义了集合的接口,必须包含一个返回迭代器类 Iterator 的方法。NameRepository 是容器的具体类,实现 Container 接口,并拥有一个内部类 NameIterator ,该内部类实现了 Iterator 接口,用于遍历容器的全部元素。IteratorPatternDemo 演示迭代器模式。
代码实现
Iterator 接口,定义遍历的两个方法
public interface Iterator { public boolean hasNext(); public Object next();
}
Container 接口,定义返回迭代器 Iterator 的方法
public interface Container { public Iterator getIterator();
}
NameRepository 是具体的容器内,含有一个内部类,内部类实现了 Iterator 接口,提供遍历集合元素的功能。
public class NameRepository implements Container { private String[] names = "apple,banana,pear,orange".split(","); @Override
public Iterator getIterator() {
return new NameIterator();
} private class NameIterator implements Iterator{ private int index; NameIterator(){
index = 0;
} @Override
public boolean hasNext() {
return this.index < names.length;
} @Override
public Object next() {
Object res = names[index];
index++;
return res;
}
}
}
演示代码
public class IteratorPatternDemo { public static void main(){ NameRepository nameRepository = new NameRepository();
Iterator iter = nameRepository.getIterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}
参考资料
Design Patterns - Iterator Pattern, TutorialsPoint
最新文章
- 转:Linux内部的时钟处理机制全面剖析
- app接口测试-bug分类
- mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]
- 让reddit/r/programming炸锅的一个帖子,还是挺有意思的
- Hadoop 2.4.1 设置问题小结【原创】
- 为什么要关闭360云盘:新来的美工嫌我们logo太丑,所以就决定关闭了。这个理由怎么样
- html树形菜单控件
- Stage3D学习笔记(六):旋转动画效果
- 食品药检所LIMS需求分析说明书
- Oracle11g R2学习系列 之二基本概念和环境介绍
- xen之基本搭建
- WebGL自学教程——WebGL演示样本:开始
- SAP 邮件发送
- Linux常用命令--文件操作
- 让linux启动更快的方法
- sqlserver存储过程的使用
- 2015-10-27 C#3
- java、php、.net关于web开发的区别
- WinForm读取指定的config文件的内容
- IntelliJ IDEA中的properties文件乱码转成中文[unicode码转中文]