迭代器模式(Iterator)

设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample

一、定义

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。

二、结构

Iterator(抽象迭代器):定义了访问和遍历元素的接口,声明了用于遍历数据元素的方法。

ConcreteIterator(具体迭代器):它实现了抽象迭代器接口,完成对聚合对象的遍历。

Aggregate(抽象聚合类):用于存储和管理元素对象,声明一个CreateIterator()方法用于创建一个迭代器对象,充当抽象迭代器工厂角色。

ConcreteAggregate(具体聚合类):实现了在抽象聚合类中声明的CreateIterator()方法,返回一个对应的具体迭代器ConcreteIterator实例。

三、优点

支持以不同方式遍历一个聚合对象,在同一个聚合对象上可以定义多种便利方式。

增加新的聚合类和迭代器类都很方便,无须修改原有代码,符合开闭原则。

四、缺点

增加新的聚合类需要对应增加新的迭代器类

五、应用场景

访问一个聚合对象的内容而无须暴露它的内部表示。

需要为一个聚合对象提供多种遍历方式。

六、个人总结

1、如果你已经了解java中的迭代器,那么迭代器设计模式应该很容易理解,简单的说,java利用这样的设计模式设计出了它的迭代器

对于我们熟知的那些集合都可以使用迭代器去遍历

2、例子中我们自己创建了迭代器的接口,这是我们学习所需要了解内部机制所用的

在实际中我们通常使用java.util.Iterator

参考博客:http://www.cnblogs.com/edisonchou/p/7442138.html

转载于:https://www.cnblogs.com/linkstar/p/7747226.html

大战设计模式【12】—— 迭代器模式相关推荐

  1. 【GOF23设计模式】迭代器模式

    [GOF23设计模式]迭代器模式 来源:http://www.bjsxt.com/  一.[GOF23设计模式]_迭代器模式.JDK内置迭代器.内部类迭代器 1 package com.test.it ...

  2. [转载] Python进阶:设计模式之迭代器模式

    参考链接: Python中的迭代器 在软件开发领域中,人们经常会用到这一个概念--"设计模式"(design pattern),它是一种针对软件设计的共性问题而提出的解决方案.在一 ...

  3. 每日学一个设计模式1——迭代器模式

    引言 精通设计模式是从码农脱颖而出的条件之一.跟着<图解设计模式>这本书学习设计模式,从今天开始,一天总结一个设计模式. 迭代器模式(一个一个遍历) 用处 隐藏遍历集合的内部结构,遍历不同 ...

  4. php迭代器实例,php设计模式之迭代器模式实例分析【星际争霸游戏案例】

    本文实例讲述了php设计模式之迭代器模式.分享给大家供大家参考,具体如下: 星际的任务关一般会有这样的设定:一开始电脑的农民不采矿,如果战斗打响,或者玩家造出第一个兵,电脑的农民开始采矿. 我们自然会 ...

  5. 设计模式之迭代器模式(Iterator)摘录

    23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...

  6. 设计模式之迭代器模式java实现代码

    迭代器模式:提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 迭代器模式提供了一种方法,可以顺序访问一个聚合对象中的元素,而又不用知道内部是如何标示的.另外,迭代器模式把在元素之 ...

  7. 设计模式复习-迭代器模式

    Iterator.H #pragma once #include <list> #include <windows.h> using namespace std;/* 设计模式 ...

  8. php foreach 循环 判断index 小于多少_PHP设计模式之迭代器模式 - 硬核项目经理

    一说到这个模式,就不得不提循环语句.在<大话设计模式>中,作者说道这个模式现在的学习意义更大于实际意义,这是为什么呢?当然就是被foreach这货给整得.任何语言都有这种类似的语法可以方便 ...

  9. Java 设计模式之迭代器模式

    一.了解迭代器模式 1.1 什么是迭代器模式 迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示. 迭代器模式把游走的任务放在迭代器上,而不是聚合上.这样简化了聚合的接口和 ...

  10. 设计模式:迭代器模式(Iterator)

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

最新文章

  1. mysql怎么创建表视频教程_mySQL学习入门教程——2.创建表
  2. ElasticSearch 2 (7) - 基本概念
  3. 介绍 Java 的内存泄漏
  4. 使用STL去除std::vector自定义结构体重复项
  5. 解决React Native使用Fetch API请求网络报Network request failed
  6. redis介绍和安装
  7. 使用python语解决一个小学数学题----鸡兔同笼问题
  8. no valid sudoers sources found, quitting ubuntu 16.04 devstack
  9. 群晖Docker部署MySQL服务
  10. C语言每日一练——第28天:要求输出国际象棋棋盘
  11. 二元灰狼优化(BGWO)应用于特征选择任务(Matlab代码实现)
  12. CISCO路由器基础配置及配置静态路由
  13. uefi多linux系统启动盘,【XORBOOT Uefi(多系统启动工具)和好用U盘启动盘制作工具哪个好用】XORBOOT Uefi(多系统启动工具)和好用U盘启动盘制作工具对比-ZOL下载...
  14. 嵌入式薪资真实情况,这届毕业生都拿多少钱?!
  15. cultureinfo 类 java_使用CultureInfo和RegionInfo类进行全球化和本地化
  16. 研究生阶段该怎么学习
  17. 一天让你成为PPT达人
  18. mysql中的scn_关于SCN的理解(全面)
  19. python+vue高校图书借阅管理系统
  20. C#使用NPOI将txt文本批量转为excel文件

热门文章

  1. python脚本加密_教你如何基于python实现脚本加密
  2. LeetCode 668. 乘法表中第k小的数(二分查找)
  3. LeetCode MySQL 569. 员工薪水中位数(over窗口函数)
  4. 程序员面试金典 - 面试题 16.16. 部分排序(排序/不排序)
  5. 程序员面试金典 - 面试题 16.05. 阶乘尾数(5的因子)
  6. 程序员面试金典 - 面试题 01.09. 字符串轮转
  7. LeetCode 606. 根据二叉树创建字符串(递归)
  8. python哪本书好看_python入门看哪本书好
  9. python实现解释器_Python设计模式之解释器模式
  10. svg载入html,SVG系列教程:SVG简介与嵌入HTML页面的方式