[译]Java 设计模式之迭代器
(文章翻译自java-design-pattern-iterator)
迭代器模式用于迭代遍历一个集合对象。它是一个经常被用到的模式,你可能以前使用过它。不管在任何时候你看见一些方法像hasNext()和Next(),这个很有可能就是一个迭代器模式。例如,你可以迭代去遍历一个数据库查询记录的列表。
迭代器模式类图
迭代器模式Java代码
interface IIterator{
public boolean hasNext();
public Object next();
}
interface IContainer{
public IIterator createIterator();
}
class RecordCollection implements IContainer{
private String recordArray[] = {"first","second","third","fourth","fifth"};
public IIterator createIterator(){
RecordIterator iterator = new RecordIterator();
return iterator;
}
private class RecordIterator implements IIterator{
private int index;
public boolean hasNext(){
if (index < recordArray.length)
return true;
else
return false;
}
public Object next(){
if (this.hasNext())
return recordArray[index++];
else
return null;
}
}
}
public class TestIterator {
public static void main(String[] args) {
RecordCollection recordCollection = new RecordCollection();
IIterator iter = recordCollection.createIterator();
while(iter.hasNext()){
System.out.println(iter.next());
}
}
}
在JDK中是用迭代器模式
在java.util包中,迭代器接口像下面这样被定义:
public interface Iterator<E> {
boolean hasNext();
E next();
void remove();
}
还有其他的类可以创建一个迭代器,例如 TreeSet#iterator(), HashSet#iterator(), 等等。
[译]Java 设计模式之迭代器的更多相关文章
- 折腾Java设计模式之迭代器模式
迭代器模式 Provide a way to access the elements of an aggregate object sequentially without exposing its ...
- JAVA设计模式之迭代器设计模式
一.迭代器模式简介 Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍历访问的设计模式. 二.迭代器模式的角色与职 ...
- 16.java设计模式之迭代器模式
基本需求: 展示一个学校的结构,比如一个学校下面有多个学院,学院下面有多个系,对其节点主要是遍历,与组合模式略有不同 传统方案: 学校<-学院<-系 依次继承 这种方式,在一个页面中展示出 ...
- 简单的了解下Java设计模式:迭代器模式(转载)
迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. Java 开发过程中遍历是常用的.如下边程序: for(int i =0 ; ...
- [译]Java 设计模式之单例
(文章翻译自Java Design Pattern: Singleton) 单例是在Java最经常被用到的设计模式.它通过阻止其他的实例化和修改来用于控制创建对象的数目.这一特性可应用于那些当只有一个 ...
- [译]Java 设计模式之桥接
(文章翻译自Java Design Pattern: Bridge) 简单来说,桥梁设计模式是一个两层的抽象. 桥接模式就是从一个抽象中实现中解耦以便两个都可以独立的改变.桥接使用封装聚合而且使用继承 ...
- [译]Java 设计模式之装饰器
(文章翻译自Java Design Pattern: Decorator – Decorate your girlfriend) 1.装饰模式的来历 让我们假设你在寻找一个女朋友.有来自像没美国中国日 ...
- [译]Java 设计模式 之模板方法
(文章翻译自Java Design Pattern: Template Method) 模板方法设计模式定义了归档特定操作的工作流.它允许子类去修改特定的步奏而不用改变工作流的结构. 下面的例子表示模 ...
- [译]Java 设计模式之工厂
(文章翻译自Java Design Pattern: Factory) 1.Java工厂模式的来历 工厂设计模式用于创建基于不同参数的对象.下面的例子就是在一个工厂里创建一个人.如果我们向工厂要一个b ...
随机推荐
- 在cocos2d-x在CCTableView使用控制
头文件需要继承CCTableViewDataSource和CCTableViewDelegate //CCScrollViewDelegate virtual void scrollViewDidSc ...
- APP漏洞导致移动支付隐患重重,未来之路怎样走?
没有一种支付是100%安全的,互联网及移动支付规模的增长,其交易的安全性须要银行.支付公司.App开发人员.用户等參与各方更加重视.当下手机支付似乎变成了一种时尚,用户们"刷手机" ...
- [git] fatal: This operation must be run in a work tree
正在使用git init --bare 它的成立裸仓库后,,正在使用git 其他命令将出现fatal:This operation must be run in a work tree 问题,途径: ...
- MEF实现设计上的“松耦合”
C#进阶系列——MEF实现设计上的“松耦合”(二) 前言:前篇 C#进阶系列——MEF实现设计上的“松耦合”(一) 介绍了下MEF的基础用法,让我们对MEF有了一个抽象的认识.当然MEF的用法可能 ...
- linux Apache rotatelogs 故障原因及解决方案未生效
rotatelogs 截断日志.构造.但保存vhost.conf 之后.serverhttpd -k restart 还是无法成功重新启动. 日志文件: (2)No such file or dire ...
- JavaScript中数字与字符串相互转化
一.数字转换成字符串 ①Number类定义的toString()方法:这个方法可以接收表示转换基数(radix,范围在2~36之间)的可选参数,如果不指定此参数,转换规则将是基于十进制.例如: ②Nu ...
- Android之Http沟通——4.Android HTTP索取信息:HttpClient
本节介绍: 他谈到了部分HttpURLConnection.本节HttpClient该,Apache为我们提供HttpClient(简单的Http客户端),只是毕竟不是亲儿子.HttpClient在A ...
- Cocos2d-x3.0 RenderTexture(一) 保存
.h #include "cocos2d.h" #include "cocos-ext.h" #include "ui/CocosGUI.h" ...
- Loadrunner11.00破解方法
1.下载 从http://www.jb51.net/softs/71240.html上面下载到loadrunner 11.0 2.安装loadrunner 11.0 下载之后,我是直接解压到硬盘,再安 ...
- Oracle 使用
Oracle 日志文件 摘要: 本篇博文呢主要是介绍 Oracle 日志文件的管理, 对 Oracle 日志文件呢,有两个比较关键的名词, 即日志文件组 LogFileGroup 和日志文件 LogF ...