【设计模式】行为型04迭代器模式(Iterator Pattern)
学习地址:http://www.runoob.com/design-pattern/iterator-pattern.html
迭代器模式,简单来说就是通过迭代的方式对集合进行遍历,在集合的学习中也一定会接触迭代遍历,原理是一样的。所以这里简单说一下,重在自己体会:
类图:
实现:
1、迭代器接口:
package com.pat.iterator;
/**
* 定义一个迭代器接口
* @author zx
*
*/
public interface Iterator {
//是否有下一个元素
public boolean hasNext();
//获取下一个元素
public Object next();
}
2、集合接口
package com.pat.iterator;
/**
* 容器对象,持有自己的迭代器
* @author zx
*
*/
public interface Containter {
public Iterator getIterator();
}
3、持有迭代器内部类的对象
package com.pat.iterator;
/**
* 实际集合,包含一个具体的迭代器
* @author zx
*
*/
public class NameRepository implements Containter{
//名称集合
public String names[] = {"AA" , "BB" ,"CC" , "DD", "EE"};
@Override
public Iterator getIterator() {
//返回一个迭代器对象
return new NameIterator();
}
/**
* 内部类
*/
private class NameIterator implements Iterator{
int index;
@Override
public boolean hasNext() {
if(index<names.length) {
return true;
}
return false;
}
@Override
public Object next() {
if(this.hasNext()){
//返回下标的数据并且index+1
return names[index++];
}
return null;
}
}
}
4、测试
package com.pat.iterator;
public class Test {
public static void main(String[] args) {
NameRepository nr = new NameRepository();
Iterator iterator = nr.getIterator();
while(iterator.hasNext()) {
String name = (String)iterator.next();
System.out.println("Name : " + name);
}
// for(Iterator iter = nr.getIterator(); iter.hasNext();){
// String name = (String)iter.next();
// System.out.println("Name : " + name);
// }
}
}
5、结果
Name : AA
Name : BB
Name : CC
Name : DD
Name : EE
【设计模式】行为型04迭代器模式(Iterator Pattern)的更多相关文章
- 设计模式系列之迭代器模式(Iterator Pattern)——遍历聚合对象中的元素
模式概述 模式定义 模式结构图 模式伪代码 模式改进 模式应用 模式在JDK中的应用 模式在开源项目中的应用 模式总结 说明:设计模式系列文章是读刘伟所著<设计模式的艺术之道(软件开发人员内功修 ...
- 设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)
上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ...
- 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern)
原文:乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 迭代器模式(Iterator Pattern) 作者:weba ...
- 设计模式学习--迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)
设计模式学习--迭代器模式(Iterator Pattern) 概述 ——————————————————————————————————————————————————— 迭代器模式提供一种方法顺序 ...
- 二十四种设计模式:迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern) 介绍提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示. 示例有一个Message实体类,某聚合对象内的各个元素均为该实体对象,现 ...
- 设计模式 - 迭代器模式(iterator pattern) 具体解释
迭代器模式(iterator pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一 ...
- [设计模式] 16 迭代器模式 Iterator Pattern
在GOF的<设计模式:可复用面向对象软件的基础>一书中对迭代器模式是这样说的:提供一种方法顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示. 类图和实例: 迭代器模式由以下角 ...
- C#设计模式——迭代器模式(Iterator Pattern)
一.概述在软件开发过程中,我们可能会希望在不暴露一个集合对象内部结构的同时,可以让外部代码透明地访问其中包含的元素.迭代器模式可以解决这一问题.二.迭代器模式迭代器模式提供一种方法顺序访问一个集合对象 ...
- 迭代器模式(Iterator Pattern)
迭代器模式定义:Iterator Pattern提供一种方法顺序访问一个聚合元素中的各个元素,而又不暴漏内部方法 酒吧提供beer和wine: public class Bar { private L ...
随机推荐
- [实时更新]jquery完整版下载
jquery-2.1.0 注!不再支持IE 6/7/8 直接引用地址: 开发版地址1: <script src="http://code.jquery.com/jquery-2. ...
- Java高级应用(一个)-文件夹监控服务
最近.在研究一些比较成熟的框架.他们还发现,他们中的一些相当不错的文章.现在,对于一些在你们中间一个简单的翻译(版的英文文章,非常有帮助). 译:原文链接 你有没有发现,当你编辑一个文件.同一时候使用 ...
- 微信小程序之购物车
这里演示从商品列表中添加到购物车 下面先做商品列表页.如下图: 布局分析: 首先一个list的主盒子,接着是item盒子,这是必须的.然后把item分成左侧的图片部分,和右侧的说明部分(item盒子使 ...
- Android发展_备份短信
短信备份的原理 短信备份的原理.是用内容提供者读取短信,然后保存. public class SmsBackupUtils { // 回调接口 public interface SmsBacku ...
- WPF - 本质:数据和行为
原文:WPF - 本质:数据和行为 如果自己来做一个UI框架,我们会首先关注哪些方面?我想UI框架主要处理的一定包括两个主要层次的内容,一个是数据展现,另一个就是数据操作,所以UI框架必须能够接收各种 ...
- js的位置和执行情况
放到<head>中的<script>在body加载之前就已经运行了. 写在body中的<script>是随着页面的加载而一个个执行的.
- MVC CRUD 的两种方法
//Index.cshtml @model IQueryable<MvcExam2.Models.Product>@{ Layout = null;}<!DOCTYPE htm ...
- iOS 自定义UIButton
工作中有一个点击button更新button上文案的需求,用自定义了button可以很简单的实现的这个需求 首先写个自定义的button CustomButton.h #import <UIKi ...
- Win8 Metro(C#)数字图像处理--2.53图像傅立叶变换
原文:Win8 Metro(C#)数字图像处理--2.53图像傅立叶变换 [函数名称] 1,一维FFT变换函数 Complex[] FFT(Complex[] sourceDat ...
- fprintf函数将格式打印到文件,非常好用(怎么没早点发现这个函数)
/* fprintf example */ #include <stdio.h> int main () { FILE * pFile; int n; ]; pFile = fopen ( ...