概念:
  迭代器模式:Provide a way to access the elements of an aggregarte object sequentiaally with exposing its underlying representation. 提供一种访问容器对象内每个元素的一种方式,并且不暴露对象的一些内部细节。

实现:
  迭代器接口定义

public interface Iterator {Object next();Boolean hasNext();
}

  容器接口定义

public interface Box {void add(Object object);Iterator createIterator();
}

  迭代器实现

public class BoxIterator implements Iterator {private BookBox bookBox;private Integer size;private Integer index;public BoxIterator(BookBox bookBox){this.bookBox = bookBox;this.size = bookBox.size();this.index = 0;}@Overridepublic Object next() {if(index<size){return bookBox.getElement(index++);}return null;}@Overridepublic Boolean hasNext() {return index<size;}
}

  容器实现

public class BookBox implements Box {private Vector vector = new Vector();@Overridepublic void add(Object object) {this.vector.add(object);}public Object getElement(Integer index){if(index<vector.size()){return vector.get(index);}return null;}public Integer size(){return vector.size();}@Overridepublic Iterator createIterator() {return new BoxIterator(this);}
}

测试及结果:

@Test
public void iteratorTest() {BookBox bookBox = new BookBox();bookBox.add("历史书");bookBox.add("政治书");bookBox.add("语文书");bookBox.add("数学书");bookBox.add("英语书");Iterator iterator = bookBox.createIterator();while (iterator.hasNext()) {System.out.println(iterator.next());}
}

  历史书
  政治书
  语文书
  数学书
  英语书

分析:
  1.简化了对容器的遍历操作,直接提供了遍历接口
  2.最常用的就是jdk的集合迭代器,这个迭代器接口是在1.2版本加入的。

转载于:https://www.cnblogs.com/ben-mario/p/11133536.html

设计模式(第十七式:迭代器模式)相关推荐

  1. 设计模式笔记十七:迭代器模式

    原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 迭代器模式(Iterator Pattern) 是 Java 和 .Ne ...

  2. C#设计模式之十七中介者模式(Mediator Pattern)【行为型】

    一.引言 今天我们开始讲"行为型"设计模式的第五个模式,该模式是[中介者模式],英文名称是:Mediator Pattern.还是老套路,先从名字上来看看."中介者模式& ...

  3. 《Head first设计模式》学习笔记 – 迭代器模式

    迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了! 真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃 ...

  4. C#设计模式之十五迭代器模式(Iterator Pattern)【行为型】

    一.引言 今天我们开始讲"行为型"设计模式的第三个模式,该模式是[迭代器模式],英文名称是:Iterator Pattern.还是老套路,先从名字上来看看."迭代器模式& ...

  5. 大战设计模式【12】—— 迭代器模式

    迭代器模式(Iterator) 设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一.定义 提供一种方法顺序访问一个聚合 ...

  6. 设计模式之禅【迭代器模式】

    真刀实枪之迭代器模式 从整理项目说起 老板要看项目,但是有点乱,让我整理下,简单,说干就干 类图先上 代码跟上 IProject package com.peng.ddq;/*** @author k ...

  7. 结合项目实例 回顾传统设计模式(九)迭代器模式

    关于迭代器模式,我们所需要知道的第一件事情就是它依赖于一个名为迭代器的接口.一旦我们有了这个接口,就可以为各种那个对象集合实现迭代器:数组.列表.散列表. 项目实例我们就拿用户角色模块来举例 背景 1 ...

  8. 设计模式的理解:迭代器模式(Iterator)

    迭代器模式,又称游标模式,提供一种方法顺序访问一个集合对象中的各个元素,而又不需要暴露该对象的内部表示. template<typename T> class Iterator{publi ...

  9. PHP设计模式(6)迭代器模式

    迭代器(Iterator)模式,在一个很常见的过程上提供了一个抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代. 迭代有几种不同的具体执行方法:在数组属性,集合对象,数组,甚至一个查询结果集之 ...

  10. 《Head First 设计模式》读书笔记——迭代器模式

    让客户遍历我们的数组.堆栈.列表或者散列表时,无法知道我们存储对象的方式,就靠今天的迭代器模式了. 案例 我们有两个餐饮店要合并经营,他们的菜品有共同的地方,所以我们这两个商店类需要一个共同的菜单属性 ...

最新文章

  1. linux做网卡bond,linux下设置网卡bond
  2. 【SDL】SDL学习笔记一 SDL的子系统的初始化和退出
  3. 借助TensorFlow框架,到底能做什么?
  4. Linux运行级别介绍和root忘记密码找回方法
  5. mysql建立索引的优缺点|创建索引alter或create索引分类(PRIMARY KEY,UNIQUE KEY,FULLTEXT,INDEX)作用查看索引show index from table
  6. 电脑工具栏怎么调整到下面_PDF格式的合同怎么盖公章?这不是在为难我胖虎吗?...
  7. GNUstep 运行gui程序
  8. 软件工程网络15个人阅读作业2(201521123010徐璐琳)
  9. SQL Server 2012入门T-SQL基础篇:(7)Where子句与Having子句的区别
  10. BP神经网络公式推导
  11. 历史_美股和美债的联动关系
  12. c#图片转ico自制小工具
  13. 从六爻分析淘宝的发展
  14. 无人机倾斜摄影—三维建模和DSM,DEM,DOM(正射影像)的生成「CC(Smart3D)),Pix4d,Photoscan,Inpho」
  15. 分布电容和杂散电容_部分电容和杂散电容
  16. Java使用Scanner与random实现骰子游戏
  17. Linux C alarm的使用
  18. python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...
  19. 唐杰:悟道的雄心,何止是万亿参数模型
  20. IE11 安装 此更新不适应计算机

热门文章

  1. 读C#开发实战1200例子记录-2017年8月14日10:03:55
  2. Oracle使用hs odbc连接mssql2008
  3. webpack基础使用Loader(三)
  4. iOS开发学无止境 - NSFileManager文件操作的十个小功能
  5. MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持
  6. Bootstrap系列 -- 11. 基础表单
  7. Delphi 自带的 Base64 编解码函数
  8. easyui combox使用
  9. centos7 docker
  10. 3.1 读入一个参数