迭代器模式(Iterator)

1. 模式的定义

如何能够以一个统一的方式来访问内部实现不同的聚合对象?

迭代器模式的定义: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示

所谓聚合对象是一组对象的组合结构,比如:Java中的集合,数组

2. UML图

Iterator:迭代器接口,定义访问和遍历元素的接口

ConcreteIterator:具体的迭代器对象。实现对聚合对象的遍历,并跟踪遍历时的当前位置

Aggregate:聚合对象,定义创建相应迭代器对象的接口

ConcreteAggregate:具体聚合对象,实现创建相应的迭代器对象

代码:

3. 研磨设计模式

1) 迭代器模式的关键思想是把对聚合对象的遍历和访问从聚合对象中分离出来,放入单独的迭代器中。

2)Java中的迭代器:java.util.Iterator

3)具有迭代策略的迭代器

4)双向迭代器:java.util.ListIterator

5)迭代器的本质是:控制访问聚合对象中的元素

6)翻页迭代:


原文发布于微信公众号 - JAVA高级架构(gaojijiagou)

原文发表时间:2018-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏calmound

Javascript数组

定义    定义空数组       var arr = new Array();       var arr = [];    定义一个包含1,2,3的数组  ...

35360
来自专栏PHP在线

五个值得深思的PHP面试题

面试题 Q6 $x应该是输出什么? $x = true and false; var_dump($x); 部分同学或许会第一时间想到false,实际上这里依...

30150
来自专栏Java编程

Java 中的 String 为什么是不可变的?

众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个...

63000
来自专栏我的博客

插入排序

原理: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果该元素(已排序)大于新元素,...

26260
来自专栏Ryan Miao

java中遇到过的String的一些特性

1.string对象是final的? 1 String str="asdfdf"; 2 str.replace("as",""); 3 System.out.p...

36390
来自专栏海天一树

小朋友学Python(23):类的属性与方法

(一)类的私有属性 __private_attr:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__pri...

27180
来自专栏LanceToBigData

Java常用类(二)String类详解

前言   在我们开发中经常会用到很多的常用的工具类,这里做一个总结。他们有很多的方法都是我们经常要用到的。所以我们一定要把它好好的掌握起来! 一、String简...

332100
来自专栏zingpLiu

四句话总结JavaScript作用域

前言:JavaScript的作用域一直以来都是前端开发中比较难以理解的知识点,JavaScript6中新引入了 let 关键字,用于指定变量属于块级作用域,本次...

10320
来自专栏hbbliyong

C#,一些非常简单但应该知道的知识点

1.本地变量 一看这个标题你可能会一愣,这是个什么东东。看个小例子: static void main() {    int a=10;    MyClass ...

44490
来自专栏土豆专栏

Java面试之关键字

finalize()是Object的protected方法,子类可以覆盖该方法来实现资源清理工作,GC在回收对象之前调用该方法。

237100

扫码关注云+社区

领取腾讯云代金券