Iterator迭代器的定义:迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。

直接看代码分析理解:

接口Iterator集合迭代器

/**
* @Acthor:
* @ClassName:Iterator
* @Description:循环遍历
*/
public interface Iterator {
boolean hasNext();
Object next();
}

接口Aggregate生成集合迭代器

/**
* @Acthor:
* @ClassName:Aggregate
* @Description:该接口生成遍历集合的迭代器
*/
public interface Aggregate {
Iterator iterator() ;
}

遍历集合对象book

/**
* @Acthor:
* @ClassName:book
* @Description:遍历对象是书
*/
public class book {
private String name;
public book(String name){
this.name = name ;
} public String getName() {
return name;
}
}

创建放书的容器书柜BookShelf

/**
* @Acthor:
* @ClassName:BookShelf
* @Description:书柜是放书的容器
*/
public class BookShelf implements Aggregate{
private book[] books ;
private int last = 0 ;
public BookShelf(int maxSize){
this.books = new book[maxSize];
} public book getBookAt(int index) {
return books[index];
}
public void appendBook(book books){
this.books[last] = books ;
last++ ;
}
public int getLength(){
return last ;
}
@Override
public Iterator iterator() {
return new BookShelfIterator(this);
}
}

遍历书柜(容器)中的书

/**
* @Acthor:
* @ClassName:
* @Description:遍历书柜容器的书
*/
public class BookShelfIterator implements Iterator {
private BookShelf bookShelf ;
private int index ;
public BookShelfIterator(BookShelf bookShelf){
this.bookShelf = bookShelf ;
this.index = 0 ;
}
@Override
public boolean hasNext() {
if(index <bookShelf.getLength()){
return true ;
}else {
return false;
}
} @Override
public Object next() {
book b = bookShelf.getBookAt(index);
index++ ;
return b;
}
}

测试代码

import java.awt.print.Book;

/**
* @Acthor:
* @ClassName:
* @Description:
*/
public class MainDemo {
public static void main(String[] args){
BookShelf bookShelf =new BookShelf(4);
bookShelf.appendBook(new book("A"));
bookShelf.appendBook(new book("C"));
bookShelf.appendBook(new book("B"));
Iterator iterator = bookShelf.iterator() ;
while(iterator.hasNext()){
book b = (book) iterator.next();
System.out.print(b.getName());
}
}
}

  以上就是迭代模式的一个小程序,可以看出要想使用迭代模式开发程序首先需要一个Iterator接口(迭代器),接口中定义你所需要的方法。然后定一个Aggregate接口是生成一个迭代器,该接口是实现

BookShelfIterator 书柜(容器)的遍历。再定义一个你所需要遍历的对象book类和需要存储book对象的BookShref书柜(容器)。
  

Java Iterator模式的更多相关文章

  1. Java 实现迭代器(Iterator)模式

    类图 /** * 自己定义集合接口, 相似java.util.Collection * 用于数据存储 * @author stone * */ public interface ICollection ...

  2. Java设计模式(12)迭代模式(Iterator模式)

    上了这么多年学,我发现一个问题,好象老师都很喜欢点名,甚至点名都成了某些老师的嗜好,一日不点名,就饭吃不香,觉睡不好似的,我就觉得很奇怪,你的课要是讲的好,同学又怎么会不来听课呢,殊不知:“误人子弟, ...

  3. Java设计模式之Iterator模式

    分类: [java]2013-07-15 10:58 917人阅读 评论(0) 收藏 举报 所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式.本文以java中的容器为例 ...

  4. <代码整洁之道>、<java与模式>、<head first设计模式>读书笔记集合

    一.前言                                                                                       几个月前的看书笔记 ...

  5. 《java与模式》

    2012年3月 随笔档案 - java_my_life - 博客园--此网友 12年的博客都是和模式有关的,希望可以多看看.http://www.cnblogs.com/java-my-life/ar ...

  6. 设计模式《JAVA与模式》之迭代子模式

    在阎宏博士的<JAVA与模式>一书中开头是这样描述迭代子(Iterator)模式的: 迭代子模式又叫游标(Cursor)模式,是对象的行为模式.迭代子模式可以顺序地访问一个聚集中的元素而不 ...

  7. Java - Iterator源码解析

    java提高篇(三十)-----Iterator 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式.Iterator模式是用于遍历集合类的标准 ...

  8. 设计模式—迭代器Iterator模式

    什么是迭代器模式? 让用户通过特定的接口访问容器的数据,不需要了解容器内部的数据结构. 首先我们先模仿集合中ArrayList和LinkedList的实现.一个是基于数组的实现.一个是基于链表的实现, ...

  9. [转]JAVA Iterator 的用法

    java.util包中包含了一系列重要的集合类.本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕. 下面我们先简单讨论一个根接口Collection,然后分析一 ...

随机推荐

  1. 9.2 sun.py

    import requests from bs4 import BeautifulSoup url = 'http://wz.sun0769.com/index.php/question/reply? ...

  2. Python自学--part1

    概要 Python介绍 Python安装 Hello World程序 变量 字符编码 用户输入 pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语句 表达式while 循环 表达 ...

  3. Python学习之文件操作(二)

    CSV文件处理 在Python中处理CSV文件可以使用模块csv.有关csv模块的官方资料看这里. 1 读取csv文件 csv.reader(csvfile, dialect='excel', **f ...

  4. java ajax长连接请求服务器数据

    Servlet 3.0笔记之异步请求Comet推送长轮询(long polling)篇 Comet另一种形式为长轮询(long polling),客户端会与服务器建立一个持久的连接,直到服务器端有数据 ...

  5. C开发系列-字符串

    C语言字符串 C语言字符串本质是使用字符数组来存储的. #include <stdio.h> int main() { "jake"; // "jake&qu ...

  6. UMP系统功能 容灾

  7. atom的使用

    一,Atom介绍 Atom 是 Github 开源的文本编辑器,这个编辑器完全是使用Web技术构建的(基于Node-Webkit).启动速度快,提供很多常用功能的插件和主题,可以说Atom已经足以胜任 ...

  8. 05.Mybatis动态sql

    1.IF标签 需求:根据条件查询用户 在Mapper.xml中编写 <!-- 根据sex和username查询user --> <select id="findbySexa ...

  9. Android 开发 MediaRecorder使用Camera1配合录制视频

    前言 MediaRecorder可以不依靠Camera API 实现视频的录制,但是如果需要切换摄像头/设置对焦/选择分辨率等等就需要Camera来参与配合录制视频.这篇博客将介绍使用Camera1来 ...

  10. php链表笔记:单链表反转

    <?php /** * Created by PhpStorm. * User: huizhou * Date: 2018/12/1 * Time: 11:41 */ /** * 1.链表的反转 ...