JAVA 设计模式 迭代器模式
用途
图-迭代器模式结构图
public Object first();
public Object next();
public boolean isDone();
public Object currentItem();
}
ConcreteIterator : 实现 Iterator 接口。记录当前访问的元素在集合中的位置信息。
private int current = 0;
private ConcreteAggregate aggregate;
public ConcreteIterator(ConcreteAggregate aggregate) {
this.aggregate = aggregate;
}
@Override
public Object first() {
return aggregate.get(0);
}
@Override
public Object next() {
current++;
if (current < aggregate.size()) {
return aggregate.get(current);
}
return null;
}
@Override
public boolean isDone() {
return (current >= aggregate.size()) ? true : false;
}
@Override
public Object currentItem() {
return aggregate.get(current);
}
}
Aggregate : 定义创建 Iterator 对象的接口。
public Iterator CreateIterator();
}
ConcreteAggregate : 实现 Iterator 接口,返回一个合适的 ConcreteIterator 实例。
private List<Object> items = new ArrayList<Object>();
@Override
public Iterator CreateIterator() {
return new ConcreteIterator(this);
}
public int size() {
return items.size();
}
public Object get(int index) {
return items.get(index);
}
public void set(int index, Object element) {
items.set(index, element);
}
public void add(Object element) {
items.add(element);
}
}
测试代码
public static void main(String[] args) {
ConcreteAggregate aggregate = new ConcreteAggregate();
aggregate.add("张三");
aggregate.add("李四");
aggregate.add("王五");
aggregate.add("赵六");
Iterator iter = new ConcreteIterator(aggregate);
Object item = iter.first();
System.out.println("第一个人是:" + item);
System.out.println("所有人的名单是:");
while (!iter.isDone()) {
System.out.println(iter.currentItem());
iter.next();
}
}
}
运行结果
所有人的名单是:
张三
李四
王五
赵六
支持对聚合对象的多种遍历。
为遍历不同的聚合结构提供一个统一的接口。
本文属于 JAVA设计模式系列 。
《大话设计模式》
《HeadFirst设计模式》
JAVA 设计模式 迭代器模式相关推荐
- java设计模式迭代器模式_迭代器设计模式示例
java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...
- java设计模式迭代器模式_Java中的迭代器设计模式–示例教程
java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...
- java设计模式迭代器模式_迭代器模式和Java
java设计模式迭代器模式 大家好,在本文中,我们将检查Iterator Pattern . 我知道你们中许多人已经使用过一种设计模式,但是也许您没有意识到它是模式,或者不知道它的巨大价值. 根据&l ...
- java设计模式迭代器模式_Java中的迭代器设计模式
java设计模式迭代器模式 Iterator design pattern in one of the behavioral pattern. Iterator pattern is used to ...
- Java设计模式——迭代器模式
概述 网上大部分人说迭代模式的时候,总是以某一种可遍历的对象为例进行介绍.这是可行的,这也是迭代模式的基本原型.当我看到<Head Frist设计模式>中迭代模式的时候,感觉要是能从另一个 ...
- java设计模式---迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节. 类型:行为类模式 类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模 ...
- 23种设计模式-迭代器模式《三国名将》
对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部 ...
- Java 设计模式——状态模式
概述 很多人在说状态模式的时候总拿策略模式来进行对比,可能他们的类图会有一点类似,可我却不认为他们有多么相像.你可以阅读<Java设计模式--策略模式>这篇博客,并与本文对比,以找到蛛丝马 ...
- Java设计模式——Builder模式
前言 之前写Android程序的时候,经常会用到Dialog(对话框)这个控件.我们在使用Dialog,比如AlertDialog的时候就用到了这里要说明的Builder模式.现在我们来看一下这样的一 ...
最新文章
- javascript 计算器、动态时钟、表格复选框全选(扩展)、轮播图、36选7、随机数...
- CentOS 7下载
- linux一路填坑...
- 【精品计划 附录2】- 算法分析
- html中给div设置的属性怎么样才能拿得到_前端基础高频面试题(更新中)
- Java记录 -9- 面向对象之封装
- 使用Epoch-Based Reclamation(EBR,特定域回收的一种方法)修改 lazy-list
- 小程序如何添加外部字体库
- 关于c语言中%g(G)的用法和精度问题
- 为满足不同交通参与者需求,德国在道路分级及限速管理上有“高招”!
- word文字铺满页面_word如何把行铺满页面 怎样使word文档铺满页面
- 【STM32】关于DMA控制器的介绍和使用
- window10系统ie设置代理,保存不了的问题
- 什么pdf转换成word转换器在线好
- 多校区网络直播系统解决方案
- 誉天双11直播盛典,爆款课程打骨折!
- 面试的时候,如何自我介绍?
- 理想点法matlab p趋向无穷大,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
- Python开发环境Spyder3安装方法
- java项目中数据字典的实现