设计模式(第十七式:迭代器模式)
概念:
迭代器模式: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
设计模式(第十七式:迭代器模式)相关推荐
- 设计模式笔记十七:迭代器模式
原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 迭代器模式(Iterator Pattern) 是 Java 和 .Ne ...
- C#设计模式之十七中介者模式(Mediator Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第五个模式,该模式是[中介者模式],英文名称是:Mediator Pattern.还是老套路,先从名字上来看看."中介者模式& ...
- 《Head first设计模式》学习笔记 – 迭代器模式
迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 爆炸性新闻:对象村餐厅和对象村煎饼屋合并了! 真是个好消息!现在我们可以在同一个地方,享用煎饼屋美味的煎饼早餐,和好吃 ...
- C#设计模式之十五迭代器模式(Iterator Pattern)【行为型】
一.引言 今天我们开始讲"行为型"设计模式的第三个模式,该模式是[迭代器模式],英文名称是:Iterator Pattern.还是老套路,先从名字上来看看."迭代器模式& ...
- 大战设计模式【12】—— 迭代器模式
迭代器模式(Iterator) 设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一.定义 提供一种方法顺序访问一个聚合 ...
- 设计模式之禅【迭代器模式】
真刀实枪之迭代器模式 从整理项目说起 老板要看项目,但是有点乱,让我整理下,简单,说干就干 类图先上 代码跟上 IProject package com.peng.ddq;/*** @author k ...
- 结合项目实例 回顾传统设计模式(九)迭代器模式
关于迭代器模式,我们所需要知道的第一件事情就是它依赖于一个名为迭代器的接口.一旦我们有了这个接口,就可以为各种那个对象集合实现迭代器:数组.列表.散列表. 项目实例我们就拿用户角色模块来举例 背景 1 ...
- 设计模式的理解:迭代器模式(Iterator)
迭代器模式,又称游标模式,提供一种方法顺序访问一个集合对象中的各个元素,而又不需要暴露该对象的内部表示. template<typename T> class Iterator{publi ...
- PHP设计模式(6)迭代器模式
迭代器(Iterator)模式,在一个很常见的过程上提供了一个抽象:位于对象图不明部分的一组对象(或标量)集合上的迭代. 迭代有几种不同的具体执行方法:在数组属性,集合对象,数组,甚至一个查询结果集之 ...
- 《Head First 设计模式》读书笔记——迭代器模式
让客户遍历我们的数组.堆栈.列表或者散列表时,无法知道我们存储对象的方式,就靠今天的迭代器模式了. 案例 我们有两个餐饮店要合并经营,他们的菜品有共同的地方,所以我们这两个商店类需要一个共同的菜单属性 ...
最新文章
- linux做网卡bond,linux下设置网卡bond
- 【SDL】SDL学习笔记一 SDL的子系统的初始化和退出
- 借助TensorFlow框架,到底能做什么?
- Linux运行级别介绍和root忘记密码找回方法
- mysql建立索引的优缺点|创建索引alter或create索引分类(PRIMARY KEY,UNIQUE KEY,FULLTEXT,INDEX)作用查看索引show index from table
- 电脑工具栏怎么调整到下面_PDF格式的合同怎么盖公章?这不是在为难我胖虎吗?...
- GNUstep 运行gui程序
- 软件工程网络15个人阅读作业2(201521123010徐璐琳)
- SQL Server 2012入门T-SQL基础篇:(7)Where子句与Having子句的区别
- BP神经网络公式推导
- 历史_美股和美债的联动关系
- c#图片转ico自制小工具
- 从六爻分析淘宝的发展
- 无人机倾斜摄影—三维建模和DSM,DEM,DOM(正射影像)的生成「CC(Smart3D)),Pix4d,Photoscan,Inpho」
- 分布电容和杂散电容_部分电容和杂散电容
- Java使用Scanner与random实现骰子游戏
- Linux C alarm的使用
- python多线程爬虫 爬取多个网页_python多线程爬虫爬取顶点小说内容(BeautifulSoup+urllib)...
- 唐杰:悟道的雄心,何止是万亿参数模型
- IE11 安装 此更新不适应计算机
热门文章
- 读C#开发实战1200例子记录-2017年8月14日10:03:55
- Oracle使用hs odbc连接mssql2008
- webpack基础使用Loader(三)
- iOS开发学无止境 - NSFileManager文件操作的十个小功能
- MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持
- Bootstrap系列 -- 11. 基础表单
- Delphi 自带的 Base64 编解码函数
- easyui combox使用
- centos7 docker
- 3.1 读入一个参数