`

迭代器模式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来迭代下一个元素。
分享到:
评论

相关推荐

    【Java设计模式】(1)迭代器模式Iterator

    迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...

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

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

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

    这个接口被称为迭代器,它负责管理和控制对聚合对象的访问顺序。迭代器模式使得客户代码可以独立于具体的聚合类进行迭代操作,提高了代码的可复用性和灵活性。 ### 2. 结构组成 迭代器模式包含以下角色: - **抽象...

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

    4. **具体聚合类**:实现了聚合接口,存储并管理元素对象,同时提供创建迭代器的方法。 迭代器模式的优点包括: 1. **封装性**:隐藏了集合的内部结构,只暴露必要的遍历操作。 2. **灵活性**:允许在不改变聚合类...

    23钟设计模式之迭代器模式模式

    在迭代器模式中,存在三个主要角色:迭代器(Iterator)、聚合对象(Aggregate)和客户端(Client)。迭代器负责遍历聚合对象中的元素,聚合对象提供了元素的集合,而客户端则使用迭代器来遍历聚合对象中的元素。 ...

    迭代器模式Demo

    2. **迭代器角色(Iterator)**:负责遍历聚合中的元素,提供了访问聚合元素的接口,如`hasNext()`和`next()`。 3. **具体迭代器角色(Concrete Iterator)**:实现迭代器接口,知道如何遍历特定的聚合对象。 4. **...

    设计模式-迭代器模式(讲解及其实现代码)

    2. **迭代器(Iterator)**:负责遍历聚合对象中的元素,它知道如何访问聚合对象的下一个元素,并且维护当前访问位置。 3. **具体迭代器(Concrete Iterator)**:实现了迭代器接口,包含了遍历聚合对象的具体逻辑。...

    IteratorPattern 迭代设计模式

    迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...

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

    3. **具体迭代器(Concrete Iterator)**:实现了迭代器接口,并知道如何在聚合类中遍历元素。每个具体的迭代器都与特定的聚合类关联,理解其内部结构。 4. **客户类(Client)**:使用迭代器来遍历聚合对象,无需...

    设计模式的迭代器模式的例子

    迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以方便...

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

    2. **Iterator(迭代器)**:负责遍历并选择聚合中的元素。 3. **ConcreteAggregate(具体聚合)**:实现了存储元素的方法,并且返回具体的迭代器对象。 4. **ConcreteIterator(具体迭代器)**:实现迭代器接口,...

    迭代器模式(Iterator)C++实现

    迭代器模式是一种设计模式,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在C++中,迭代器模式通常通过定义一个接口,该接口允许访问和遍历聚合对象的元素,而无需暴露其内部结构。这种模式在...

    设计模式之迭代器模式

    迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式是通过接口实现的,这使得我们可以遍历任何实现了`Iterable`接口的对象,例如集合框架中的`...

    迭代器模式代码示例

    迭代器模式是一种设计模式,属于行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以...

    迭代器模式demo

    迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象编程语言中,迭代器模式被广泛应用于集合类库,如ArrayList、LinkedList等。这个"迭代器模式demo...

    C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 (Level 300)

    迭代器模式是面向对象设计中的一个行为型模式,它的主要目的是提供一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在C#中,迭代器模式的应用广泛且重要,尤其对于集合类的遍历操作至关重要。本文将深入...

    迭代器Iterator.txt

    迭代器模式定义了访问一个聚合对象中各个元素的接口,它提供了一种方法来顺序访问集合对象中的元素,而又不暴露该对象的内部表示。这种模式使得对集合对象的遍历更加灵活,并且可以为不同的遍历需求提供不同的实现...

    java迭代器模式实现正反向遍历

    在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...

    Android迭代器模式demo

    2. **迭代器(Iterator)**:迭代器接口提供了访问聚合类中元素的方法,如`hasNext()`用来检查是否还有更多元素,`next()`用于获取下一个元素。在Java中,迭代器接口已经内置在`java.util.Iterator`类中。 3. **...

Global site tag (gtag.js) - Google Analytics