`

Iterator模式

阅读更多
我个人常叫它游标模式,该模式的主要目的就是,顺序访问集合中的各个对象,而又不暴露该对象的内部表示。
使用场景:针对一个集合或是封装了集合的对象,对外界需要提供一个访问该集合或是该集合封装对象的保存的元素时,同时又不希望暴露该集合的内部结构。并且希望支撑根据不同的需求对集合元素进行不同的遍历。
主要的思想就是将集合与集合的遍历操作进行分离。即集合元素负责添加对象和删除对象等等。而遍历操作交给另一个对象。因此很容易想像到使用了组合,即将集合注入到Iterator的实现类当中。
实例:
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 book) {
        this.books[last] = book;        last++;
    }
    public int getLength() {        return last;    }
    public Iterator iterator() {        return new BookShelfIterator(this);    }
}
BookShelf是一个封装了集合的对象,当然如果希望迭代器可以实现动态指定,可以再声明一个迭代器的成员变量。然后注入一个自己想要的迭代器即可。
return new BookShelfIterator(this);将集合对象注入给迭代器。并返回迭代器的实例。
public interface Iterator {
    public abstract boolean hasNext();
    public abstract Object next();
}

public class BookShelfIterator implements Iterator {
    private BookShelf bookShelf;
    private int index;
    public BookShelfIterator(BookShelf bookShelf) {
        this.bookShelf = bookShelf;
        this.index = 0;}
    public boolean hasNext() {
        if (index < bookShelf.getLength()) {            return true;}
        else {            return false; }  }
    public Object next() {
        Book book = bookShelf.getBookAt(index);
        index++;
        return book;
    } }
分享到:
评论

相关推荐

    Java源码分析:深入探讨Iterator模式

    ### Java源码分析:深入探讨Iterator模式 #### 一、引言 在Java编程语言中,集合框架(`java.util`包)提供了多种容器类来存储对象,如`List`、`Set`和`Map`等。为了遍历这些容器中的元素,Java引入了迭代器模式...

    Java设计模式之Iterator模式

    所谓Iterator模式,即是Iterator为不同的容器提供一个统一的访问方式。本文以java中的容器为例,模拟Iterator的原理。 参考:马士兵 Java设计模式 Iterator 1.首先定义一个容器Collection接口. 2.定义一个Iterator...

    使用Iterator模式将对象转成String (2).docx

    Iterator模式是一种设计模式,主要用于遍历容器(如集合、数组)中的元素,提供了一种统一的访问方式,而无需暴露容器的内部结构。在Java中,`java.util.Iterator`接口就是这种模式的一个典型应用。在给定的文档中,...

    使用Iterator模式将对象转成String.docx

    【Iterator模式】是一种设计模式,它提供了一种顺序访问聚合对象元素的方式,而又不暴露其底层表示。在Java中,Iterator接口是实现此模式的主要工具,它允许我们遍历任何集合,如ArrayList、LinkedList等,而无需...

    使用Iterator模式将对象转成String (2).pdf

    Iterator模式是一种设计模式,它提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法。在Java中,Iterator模式常用于遍历集合(如ArrayList、LinkedList等)和Map,使得开发者可以方便地对集合进行操作,而...

    使用Iterator模式将对象转成String.pdf

    Iterator模式是一种设计模式,它允许程序访问集合对象的元素而不暴露其底层表示。在这个场景中,我们关注的是如何使用Iterator模式将对象转换为可读性强的字符串,这在日志记录、调试或输出对象信息时非常有用。我们...

    Java的Iterator模式分页程序

    大体思想:分页的核心思想采用 Iterator模式,每次从数据库中取定量的数据块 其中block和pageCount是两个不同的概念,block是块,规定了从数据库中获取的数量 pageCount为表现层每页显示的数量 另外参数中还包含缓存...

    2022年Java源码分析:深入探讨Iterator模式Java教程.docx

    在Java编程语言中,Iterator模式是一种设计模式,用于在各种数据结构(如集合)中进行迭代操作,使得用户可以顺序地访问集合中的元素,而无需了解底层数据结构的细节。这个模式有效地解耦了集合对象和遍历行为,提供...

    C++ Iterator模式

    迭代器模式是软件设计模式中的一种行为模式,它在C++中的应用十分广泛。这个模式的主要目的是提供一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。通过使用迭代器模式,用户可以遍历任何聚合对象,而无需...

    Java设计模式之Iterator模式介绍

    Iterator模式是一种行为设计模式,它的主要作用是在不暴露容器内部结构的情况下,允许外部代码逐个访问容器中的元素。在Java中,Iterator模式被广泛应用于集合框架,如ArrayList、LinkedList等,使得用户能够方便地...

    F_Java源码分析:深入探讨Iterator模式.doc

    F_Java源码分析:深入探讨Iterator模式

    JavaScript实现Iterator模式实例分析

    JavaScript中的Iterator模式是一种被广泛使用的设计模式,其目的是为了能够按顺序逐个访问容器中的元素,而不暴露容器的内部实现。此模式常用于数组和类数组对象,以便于在JavaScript这种没有显式接口定义的语言中,...

    Iterator用法

    ### C++中的Iterator模式详解 #### 什么是Iterator模式? 在软件工程中,设计模式是一种用于解决特定问题的通用可重用解决方案。Iterator模式是其中的一种,其主要目标是在不暴露集合内部结构的情况下,为遍历集合...

    Java:深入探讨Iterator模式

    java.util包中包含了一系列重要的集合类。本文将从分析源码入手,深入研究一个集合类的内部结构,以及遍历集合的迭代模式的源码实现内幕。

    11-Iterator.rar

    在Java、C#等面向对象语言中,Iterator模式扮演着非常重要的角色。 迭代器模式通常由以下组件构成: 1. **聚合对象**(Aggregate):它定义了对一组对象的接口,而这些对象可以通过迭代器进行访问。在Java中,这...

    java-util-iterator.pdf java-util-iterator.pdf

    ### 三、Iterator模式的优势 使用`Iterator`模式遍历集合具有以下优势: 1. **解耦访问逻辑**:客户端代码无需了解集合的具体实现,这使得修改集合实现时不会影响到客户端代码。 2. **简化客户端代码**:通过`...

    (行为型模式) Iterator 迭代器模式

    C#面向对象设计模式 (行为型模式) Iterator 迭代器模式 视频讲座下载

    Java设计模式之迭代模式(Iterator模式)介绍

    首先,迭代模式的核心组件包括迭代器(Iterator)和聚合对象(Aggregate)。在给定的例子中,`Teacher`接口代表聚合对象,`ConcreteTeacher`是它的具体实现,存储了学生的出勤情况。`Iterator`接口定义了迭代操作,...

Global site tag (gtag.js) - Google Analytics