迭代器模式(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538526.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易语言python1.1模块_易语言之编写模块与引入模块

本人并不精通易语言,只是对其进行一定了解后做一个简单的总结。直接新建一个易语言模块,然后添加子程序即可。子程序当然可以随意命名,实际上,易语言的子程序就和c语言的函数,java中的方法一样(实际上,java…

spring boot开发笔记——mybatis

概述 mybatis框架的优点,就不用多说了,今天这边干货主要讲mybatis的逆向工程,以及springboot的集成技巧,和分页的使用 因为在日常的开发中,当碰到特殊需求之类会手动写一下sql语句,大部分的时候完全可以用m…

Angular项目目录介绍

通过 ng new 项目名生成的项目 一级目录 Angular cli 工具生成的目录文件名不要随意修改,要不然会影响工具的使用。e2e:端到端的测试目录,用来做自动测试的。node_modules:Angular第三方包。src:应用源代码目录&#…

jvm内存模型_四种视角看JVM内存模型

1.JVM运行视角程序计数器Java虚拟机栈本地方法栈Java堆方法区1 .程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的行号指示器。这个计数器记录的是正在执行的虚拟机字节码指令的地址。此内存区域是唯一一个在JAVA虚拟机规范中没有规定任何Ou…

Tomcat服务脚本

为什么80%的码农都做不了架构师?>>> #!/bin/bash ### BEGIN INIT INFO # Provides: tomcat # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # S…

oracle 取当前日期时间的前一天前一小时前一分钟前一秒

原文链接:http://wentao365.iteye.com/blog/779492 点击阅读原文 --------------------------------------------------------------------------- SELECT 当前时间 TITLE, TO_CHAR(SYSDATE, yyyy-mm-dd hh24:mi:ss) TIME FROM DUAL --当前时间 UNION ALL S…

mysql8事务级别_Mysql几种事务隔离级别

前言:之前对mysql的基础知识通过了几篇博客进行了一个详解,包括从数据库系统的原理以及最基本的操作使用,此篇博客将主要对mysql的事务级别进行实战分析1.什么是事务?事务是应用程序中一系列严密的操作,所有操作必须成…

控制台应用和空项目有什么区别_互联网小程序的应用以及APP的应用有什么区别及发展...

随时移动互联网进入的千家万户,互联网的手机应用程序也渐渐的在市场上流行起来了。今天主要跟大家谈一下互联网小程序的应用以及APP的应用有什么区别以及未来的发展趋。未来会流行什么手机应用或者APP应用,我带大家都为了解一下。下边先来了解一下小程序…

day19_java基础加强_动态代理+注解+类加载器

一、动态代理 1.1、代理模式 什么是代理模式及其作用? Proxy Pattern(即:代理模式),23种常用的面向对象软件的设计模式之一。        代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。 …

使用循环链表实现一个通讯录的管理程序_【LeetCode链表题型总结】

点击上方蓝字,关注公众号链表概念的讲解链表是什么链表是一种线性数据结构,每个节点都存有数据,通过指针将各个节点链接在一起。链表的性质一致性: 每个节点有相同的数据结构,相同的数据大小,内存中占据相同的大小&…

python的kite下载安装及使用_Kite下载|Kite Python编程工具 V1.2020.1203.0 最新版下载 - 下载银行...

Kite是一款专为Python打造的一款代码补全软件,如果你正在学习Python或是从事与Python相关的编程工作,那么这款软件绝对是你的好帮手!其会智能判断用户想要输入的每个代码字段,并在所有库中进行匹配相应的内容,如果看到…

Linux 升级 Python 至 3.x

原文链接:http://blog.csdn.net/liang19890820/article/details/51079633 -------------------------------------------- 简述 CentOS 7 中默认安装了 Python,版本比较低(2.7.5),为了使用新版 3.x,需要对…

Sublime Text 3 配置python交互运行环境的快捷键

2019独角兽企业重金招聘Python工程师标准>>> 使用Sublime Text 3能以轻量级的环境写python脚本,运行python代码。为了更加方便地调用python脚本,通过在Sublime Text 3中绑定快捷键的方式,实现一键调用python交互运行环境&#xff…

xftp如何搜索文件_头条搜索站长平台如何添加网站和sitemap文件?附图文教程

头条搜索站长平台已经上线了,目前我们广大站长都可以登录该平台后添加新网站和提交 sitemap 地图文件,建议大家可以前往尝试一下,多一个搜索平台就多一条路,认为倒是挺好的。下面就跟大家简单介绍头条搜索站长平台如何添加网站和提…

彩铅练习,花船

图片发自简书App图片发自简书App

我的女朋友漏电了–论C++中的失败(failure),缺陷(bug)和异常(exception)

先做个广告置入,如果喜欢这篇文章,你可以到 zhaoyan.website/blog 去查看于此类似的C/C文章。 我承认有点标题党了,不过这真的是一篇写软件的文章,所以如果你已经抽出了一张面巾纸,那么趁早再把它完美的放回去。这篇软…

SQLplus 和mysql区别_mysql和oracle的区别有哪些

MySQL和Oracle都是流行的关系数据库管理系统(RDBMS),在世界各地广泛使用;大多数数据库以类似的方式工作,但MySQL和Oracle的这里和那里总是存在一些差异的。本篇文章就给大家比较Oracle和MySQL,介绍Oracle和MySQL之间的区别&#x…

127.0.0.1与localhost的区别

2019独角兽企业重金招聘Python工程师标准>>> 区别1: localhost也叫local ,正确的解释是:本地服务器 127.0.0.1在windows等系统的正确解释是:本机地址(本机服务器) 他们的解析通过本机的host文件,windows自动将localhost解析为127.…

mysql 索引_MySQL之索引

索引查找算法BTREEBTREE查找算法演变B-TREE :普通 BTREE,平衡多路查找树(B-Tree)BTREE :叶子节点双向指针BTREE(B*TREE):枝节点的双向指针普通B-TREE增强版BTREE(B*TREE)总结:从上图看出,在BTree上有两个头…

java数学计算表达式_Java初学者:内建函数计算简单的数学表达式

这个应该在之前写的,忘记了,补上这次我们说一下如何用java计算数学表达式的值,比如,我们要计算sin(pi/3) cos(pi/6) 5.6^3,怎么计算呢?这里我们需要用到java的math的内建函数,所谓内建函数&am…