【设计模式】行为型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 ...
随机推荐
- windown下linux子系统的安装和卸载
原文:windown下linux子系统的安装和卸载 安装 第一步 打开开发人员模式 第二步 勾选适用linux的window子系统 第三步 打开powershell 第四步 在PowerShe ...
- Windows安装Linux子系统--安装GUI界面
原文:Windows安装Linux子系统--安装GUI界面 前段时间发现Windows可以安装Linux子系统了,恰逢电脑换了固态,还没装Linux,不如趁机体验一番! 1.准备工作 1.1.打开 ...
- Linux性能测试 ps命令
名称:ps 使用权限:所有使用者 使用方式:ps [options] [--help] 说明:显示瞬间行程 (process) 的动态 参数: ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍 ...
- WPF获取读取电脑指定文件夹中的指定文件的地址
//保存指定文件夹中的指定文件的地址 string List<string> mListUri = new List<string>(); //文件夹地址 string fol ...
- 【Quartz】定时器初步实验(一)
原文:[Quartz]定时器初步实验(一) 以前就了解了Quartz这个定时框架,但是一直没有认真的去关注他,最近忽然看到已经更新到3.0.4支持异步操作了所以就写个简单的小例子看看好用不. ...
- 入骨三分的“我们是谁”IT行业版
这组漫画用简单的台词.粗犷的线条,把很多人心中对甲方(客户)的不满彻底地发泄了一通,并且出现了很多变种版本,引发了传播热潮. http://news.sina.com.cn/c/nd/2017-08- ...
- .net core 允许跨域
在Startup的ConfigureServices()中添加services.AddCors()在Startup的Configure()中添加app.UseCors(); 保证其在app.UseMv ...
- C#读取文件夹特定文件的方法
public image[] getImages() { FolderBrowserDialog fbd = new FolderBrowserDialog(); if (fbd.ShowDialog ...
- CentOS 6安装桌面
安装图形界面 yum -y groupinstall "X Window System" "Chinese Support" "Desktop&quo ...
- ASP .NET 返回Json操作结果
返回string var A="..."; var B="..."; $.ajax({ type: "POST", url: "/ ...