`

迭代器模式Iterator 控制访问聚合对象中的元素

阅读更多
提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
public interface Iterator {
  public void first();
  public void next();
  public boolean isDone();
  public Object currentItem();
}

public abstract class Aggregate {
  public abstract Iterator createIterator();
}

public class ConcreteAggregate extends Aggregate {
  private String[] ss = null;
  public ConcreteAggregate(String[] ss) {
   this.ss = ss;
  }
  public Iterator createIterator() {
    return new ConcreteIterator(this);
  }
  public Object get(int index) {
    Object retObj = null;
    if(index < ss.length) {
      retObj = ss[index];
    }
    return retObj;
  }
  public int size() {
    return this.ss.length;
  }
}

public class ConcreteIterator implements Iterator {
  private ConcreteAggregate aggregate;
  private int index=-1;
  public ConcreteIterator(ConcreteAggregate aggregate) {
    this.aggregate = aggregate;
  }
  public void first() {
    index = 0;
  }
  public void next() {
    if(index < this.aggregate.size()) {
      index += 1;
    }
  }
  public boolean isDone() {
    if(index == this.aggregate.size()) {
      return true;
    }
    return false;
  }
  public Object currentItem() {
    return this.aggregate.get(index);
  }
}

客户端代码:
String names={"张三","李四","王五"};
Aggregate aggregate = new ConcreteAggregate(names);
Iterator it = aggregate.createIterator();
it.first();
while(!it.isDone()) {
  Object obj = it.currentItem();
  it.next();
}

迭代器模式的功能主要在于提供聚合对象的迭代访问。

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

内部迭代器:由迭代器自己来控制迭代下一个元素的步骤,客户端无法干预。
外部迭代器:由客户端来控制迭代下一个元素的步骤,客户端必须显式地调用next来迭代下一个元素。
分享到:
评论

相关推荐

    迭代器模式(Iterator Pattern)原理图

    迭代器(Iterator):定义一个访问聚合对象中元素的方法,并隐藏内部表示。 具体迭代器(Concrete Iterator):实现迭代器接口,对聚合对象进行遍历。 聚合对象(Aggregate):定义创建迭代器对象的接口。 具体聚合...

    设计模式(C#)之迭代器模式(Iterator Pattern)

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

    Objective C 迭代器模式设计源码

    迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 那么一般在什么时候才会用迭代器模式呢?当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候...

    c++设计模式-行为型模式-迭代器模式

    c++设计模式-行为型模式-迭代器模式;qt工程;c++简单源码;迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。

    迭代器模式1

    介绍迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。迭代器的几个特点是:访问一个聚合对象的内容而无需暴露它的内

    C++设计模式之迭代器模式(Iterator)

    迭代器模式提供了一种顺序访问容器中元素的方法,而无需了解器内部的类型和结构,该模式的核心思想将访问和遍历容器对象的功能交给一个外部的迭代器对象,该迭代器定义了访问聚合对象的接口, 类视图 实现 class ...

    java设计模式--迭代器设计模式.docx

    迭代器模式(Iterator Pattern)是一种非常常用的设计模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 介绍 意图: 提供一种方法顺序访问一个聚合对象中各个...

    设计模式(十七)——迭代器模式(Iterator Pattern)

    迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。 提供一种可以遍历聚合对象的方式。又称为:游标cursor模式 聚合对象:存储数据 ...

    C#学习笔记整理-迭代器模式介绍

    迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器...

    Python设计模式之迭代器模式原理与用法实例分析

    迭代器模式(Iterator Pattern):提供方法顺序访问一个聚合对象中各元素,而又不暴露该对象的内部表示. 下面是一个迭代器模式的demo: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话...

    PHP设计模式之迭代器模式

    在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示,这就是PHP迭代器模式的定义。 适用场景: 访问一个聚合对象的内容而无需暴露它的内部表示 支持对聚合对象的多种遍历 为遍历...

    .NET设计模式(18):迭代器模式(IteratorPattern)

    Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露...

    C++设计模式编程中的迭代器模式应用解析

    迭代器模式:提供一种方法顺序访问一个聚合对象中个各个元素,而不暴露该对像的内部表示. 迭代器模式应该是最为熟悉的模式了,最简单的证明就是我在实现组合模式、享元模式、观察者模式中就直接用到了 STL 提供的迭代...

    design-pattern-java.pdf

    自定义语言的实现——解释器模式(五) 自定义语言的实现——解释器模式(六) 迭代器模式-Iterator Pattern 遍历聚合对象中的元素——迭代器模式(一) 遍历聚合对象中的元素——迭代器模式(二) 遍历聚合对象中的...

    深入理解JavaScript系列(35):设计模式之迭代器模式详解

    迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。 迭代器的几个特点是: 1.访问一个聚合对象的内容而无需暴露它的内部表示。 2.为遍历不同的集合结构提供一个统一的接口...

    GoF 的 23 种设计模式

    迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素...

    JavaScript迭代器的含义及用法

    什么是迭代器 迭代器就是为实现对不同集合进行统一遍历操作的一种机制,只要给需要遍历的数据结构部署Iterator接口,通过...迭代器模式,提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示

    设计模式(23种)与设计原则(6种)

    16)迭代器模式(Iterator) 17)中介模式(Mediator) 18)备忘录模式(Memento) 19)观察者模式(Observer) 20)状态模式(State) 21)策略模式(Strategy) 22)模版模式(Template) 23)访问者模式(Visitor...

    PHP聚合式迭代器接口IteratorAggregate用法分析

    本文实例讲述了PHP聚合式迭代器接口IteratorAggregate用法。分享给大家供大家参考,具体如下: PHP IteratorAggregate又叫聚合式迭代器,它提供了... * 利用聚合式迭代器,并返回一个实现了Iterator接口的类的实例 *

Global site tag (gtag.js) - Google Analytics