- 浏览: 25624 次
- 性别:
- 来自: 上海
文章分类
提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
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来迭代下一个元素。
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来迭代下一个元素。
发表评论
-
访问者模式Visitor预留通路,回调实现
2014-03-13 16:55 377表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 490将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 341使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 276动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 294给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 301运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 432在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 398允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 416迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 537定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 306将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
命令模式Command 封装请求
2014-03-07 16:26 379将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 382定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 330为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 370用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 565用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 307将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 417工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 950定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 426保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...
迭代器(Iterator):定义一个访问聚合对象中元素的方法,并隐藏内部表示。 具体迭代器(Concrete Iterator):实现迭代器接口,对聚合对象进行遍历。 聚合对象(Aggregate):定义创建迭代器对象的接口。 具体聚合...
这个接口被称为迭代器,它负责管理和控制对聚合对象的访问顺序。迭代器模式使得客户代码可以独立于具体的聚合类进行迭代操作,提高了代码的可复用性和灵活性。 ### 2. 结构组成 迭代器模式包含以下角色: - **抽象...
4. **具体聚合类**:实现了聚合接口,存储并管理元素对象,同时提供创建迭代器的方法。 迭代器模式的优点包括: 1. **封装性**:隐藏了集合的内部结构,只暴露必要的遍历操作。 2. **灵活性**:允许在不改变聚合类...
在迭代器模式中,存在三个主要角色:迭代器(Iterator)、聚合对象(Aggregate)和客户端(Client)。迭代器负责遍历聚合对象中的元素,聚合对象提供了元素的集合,而客户端则使用迭代器来遍历聚合对象中的元素。 ...
2. **迭代器角色(Iterator)**:负责遍历聚合中的元素,提供了访问聚合元素的接口,如`hasNext()`和`next()`。 3. **具体迭代器角色(Concrete Iterator)**:实现迭代器接口,知道如何遍历特定的聚合对象。 4. **...
2. **迭代器(Iterator)**:负责遍历聚合对象中的元素,它知道如何访问聚合对象的下一个元素,并且维护当前访问位置。 3. **具体迭代器(Concrete Iterator)**:实现了迭代器接口,包含了遍历聚合对象的具体逻辑。...
迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...
3. **具体迭代器(Concrete Iterator)**:实现了迭代器接口,并知道如何在聚合类中遍历元素。每个具体的迭代器都与特定的聚合类关联,理解其内部结构。 4. **客户类(Client)**:使用迭代器来遍历聚合对象,无需...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以方便...
2. **Iterator(迭代器)**:负责遍历并选择聚合中的元素。 3. **ConcreteAggregate(具体聚合)**:实现了存储元素的方法,并且返回具体的迭代器对象。 4. **ConcreteIterator(具体迭代器)**:实现迭代器接口,...
迭代器模式是一种设计模式,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在C++中,迭代器模式通常通过定义一个接口,该接口允许访问和遍历聚合对象的元素,而无需暴露其内部结构。这种模式在...
迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式是通过接口实现的,这使得我们可以遍历任何实现了`Iterable`接口的对象,例如集合框架中的`...
迭代器模式是一种设计模式,属于行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以...
迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象编程语言中,迭代器模式被广泛应用于集合类库,如ArrayList、LinkedList等。这个"迭代器模式demo...
迭代器模式是面向对象设计中的一个行为型模式,它的主要目的是提供一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在C#中,迭代器模式的应用广泛且重要,尤其对于集合类的遍历操作至关重要。本文将深入...
迭代器模式定义了访问一个聚合对象中各个元素的接口,它提供了一种方法来顺序访问集合对象中的元素,而又不暴露该对象的内部表示。这种模式使得对集合对象的遍历更加灵活,并且可以为不同的遍历需求提供不同的实现...
在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...
2. **迭代器(Iterator)**:迭代器接口提供了访问聚合类中元素的方法,如`hasNext()`用来检查是否还有更多元素,`next()`用于获取下一个元素。在Java中,迭代器接口已经内置在`java.util.Iterator`类中。 3. **...