迭代器模式(Iterator)
迭代器模式
一. 迭代器模式
1.1 定义
- 提供一种方法顺序访问一个集合对象中的各种元素,而又不暴露该对象的内部表示.
1.2 角色
- 抽象迭代器接口(Iterator).
- 具体迭代器(ConcreteIterator).
- 抽象聚合接口(Aggregate).
- 具体聚合(ConcreteAggregate).
二. 具体实现
1.1 创建抽象迭代器接口
public interface Iterator {Object next();boolean hasNext();}
1.2 创建抽象聚合接口
public interface Aggregate {Iterator iterator();}
1.3 创建具体聚合及具体迭代器
public class ConcreteAggregate implements Aggregate {@Overridepublic Iterator iterator() {return new ConcreteIterator();}private class ConcreteIterator implements Iterator {@Overridepublic Object next() {System.out.println("ConcreteIterator next ...");return null;}@Overridepublic boolean hasNext() {System.out.println("ConcreteIterator hasNext ....");return true;}}}
1.4 调用
public static void main(String[] args) {Aggregate aggregate = new ConcreteAggregate();Iterator iterator = aggregate.iterator();if(iterator.hasNext()){iterator.next();}}
1.5 输出
ConcreteIterator hasNext ....ConcreteIterator next ...
三. 优缺点
3.1 优点
- 简化了聚合类的接口.
3.2 缺点
- 增加新的聚合类需要增加新的具体迭代器.
四. 源码
https://github.com/Seasons20/DisignPattern.git
END
迭代器模式(Iterator)相关推荐
- 设计模式 - 迭代器模式(iterator pattern) 具体解释
迭代器模式(iterator pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 迭代器模式(iterator pattern) : 提供一 ...
- 设计模式:迭代器模式(Iterator Pattern)
迭代器模式(Iterator Pattern): 属于行为型模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即: 不暴露其内部结构.
- c++迭代器模式iterator
c++迭代器模式iterator 概念 角色和职责 案例 概念 Iterator模式也叫迭代模式,是行为模式之一,它把对容器中包含的内部对象的访问委让给外部类,使用Iterator(遍历)按顺序进行遍 ...
- 设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型)
设计模式 ( 十四 ) 迭代器模式Iterator(对象行为型) 1.概述 类中的面向对象编程封装应用逻辑.类,就是实例化的对象,每个单独的对象都有一个特定的身份和状态.单独的对象是一种组织代码的有用 ...
- 设计模式之迭代器模式(Iterator)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 迭代器模式(Iterator pattern)
一. 引言 迭代这个名词对于熟悉Java的人来说绝对不陌生.我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator(); w ...
- 迭代器模式(Iterator)解析例子
摘要:本文深入浅出的讲述了设计模式中的迭代器模式,并给出了简单的示例,例子浅显易懂,并附带源代码. 迭代器模式属于行为型模式,其意图是提供一种方法顺序访问一个聚合对象中得各个元素,而又不需要暴露该对象 ...
- 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手
一.你在开发中使用过迭代吗? 当你在使用JavaScript开发客户端应用的时候使用过for...in吗? 1<script type="text/javascript&q ...
- 听webcast的行为型模式篇-迭代器模式(Iterator Pattern) 记录
< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> dotnet或java里 ...
- 33迭代器模式(Iterator Pattern)
动机(Motivate): 在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种" ...
最新文章
- 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
- 陶哲轩实分析 习题 13.4.6
- 016_continue和break语句
- linux sendto 对方关闭后性能,Gateway的请问sendToUid是否有性能问题?
- 二分查找(对半搜索)
- ffmpeg-从mp4、flv、ts文件中提取264视频流数据
- Python开发常用工具库
- 俄国数学家称:“平行线可以相交”,却遭到质疑,死后12年被证实
- ant指定servlet版本_[转载]程序开发常见错误
- Matplotlib 中文用户指南 1 简介
- Centos 7系统目录结构
- Windows系统结构图
- SWFUpload文件上传
- Java证件照剪切_GitHub - caoqiang250/idPicCut: 对原始证件照进行压缩,剪裁,换背景,(美颜)...
- 一支管理高效的技术团队是什么样子的?
- Paypal 与Moneybookers
- 基于AR虚拟现实技术的维基世界浏览器wikitude
- 齐纳二极管 稳压二极管 SOD123封装 正负区分
- 扫码反馈,“码”上回复:二维码在业主意见反馈中的应用
- 多linux系统的安装方法,在Linux系统中安装使用WPS的方法
热门文章
- BugkuCTF-PWN题canary超详细讲解
- java 排序api_用java api进行sort
- mysql出现core dumped_mysql-为什么我遇到分段错误(核心已转储)?
- lr不能直接转ps编辑_摄影后期调色软件,Lr软件包
- c#二叉树 取叶子节点个数_两种类似但是原理不同的算法求二叉树的所有叶子节点和...
- linux系统关机half,Linux 学习 (六) 关机与重启命令
- 筛法求素数c 语言,位筛法求素数,有段代码看不懂,有大佬可以来说一下
- php 日志按天截取,Laravel 日志管理:按日期切割日志
- MySQL考试复习(知识点、练习题)
- java接口的应用举例