- 浏览: 23533 次
- 性别:
- 来自: 上海
文章分类
提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。
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 319表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各 ... -
桥接模式Bridge分离抽象和实现
2014-03-13 16:55 430将抽象部分与它的实现部分分离,使它们都可以独立地变化。 桥接 ... -
职责链模式Chain of Responsibility分离职责,动态组合
2014-03-12 17:25 309使多个对象都有机会处 ... -
装饰模式Decorator动态组合
2014-03-12 17:00 244动态地给一个对象添加 ... -
解释器模式Interpreters分离实现,解释执行
2014-03-12 16:27 259给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解 ... -
享元模式Flyweight分离与共享
2014-03-12 13:20 271运用共享技术有效地支持大量细粒度的对象。 安全实体:就是被系 ... -
备忘录模式Memento保存和回复内部状态
2014-03-11 17:47 404在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外 ... -
状态模式State根据状态来分离和选择行为
2014-03-11 17:20 355允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改 ... -
策略模式Strategy分离算法,选择实现
2014-03-11 15:26 387迪米特法则:LoD,最少知识原则。 如果两个类不必彼此直接通信 ... -
模板方法模式Templete Method 固定算法骨架
2014-03-11 11:15 509定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法 ... -
组合模式Composite统一叶子对象和组合对象
2014-03-07 18:18 286将对象组合成树型结构以表示“部分-整体”的层次结构。组合模式使 ... -
命令模式Command 封装请求
2014-03-07 16:26 336将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数 ... -
观察者模式Observer订阅模式-触发联动
2014-03-07 11:19 342定义对象间的一种一对 ... -
代理模式Proxy 为别人做嫁衣(控制对象访问)
2014-03-06 00:39 302为其他对象提供一种代理以控罪对这个对象的访问。 代理大致被分为 ... -
中介者模式Mediator 封装交互
2014-03-06 00:19 346用一个中介对象来封装 ... -
原型模式Prototype 克隆生成对象
2014-03-06 00:19 542用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 ... -
生成器模式Builder 分离整体构建算法和部件构造
2014-03-06 00:19 278将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 ... -
抽象工厂模式 Abstract Factory 选择产品簇的实现
2014-03-06 00:20 368工厂方法模式或简单工 ... -
工厂方法模式Factory Method延迟到子类来选择实现
2014-03-05 18:12 891定义一个用于创建对象 ... -
单例模式Singleton某个类只需要一个类实例
2014-03-05 16:46 395保证一个类只有一个实例,并提供一个访问它的全局访问点。 懒汉 ...
相关推荐
迭代器(Iterator):定义一个访问聚合对象中元素的方法,并隐藏内部表示。 具体迭代器(Concrete Iterator):实现迭代器接口,对聚合对象进行遍历。 聚合对象(Aggregate):定义创建迭代器对象的接口。 具体聚合...
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 那么一般在什么时候才会用迭代器模式呢?当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候...
c++设计模式-行为型模式-迭代器模式;qt工程;c++简单源码;迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
介绍迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。迭代器的几个特点是:访问一个聚合对象的内容而无需暴露它的内
迭代器模式提供了一种顺序访问容器中元素的方法,而无需了解器内部的类型和结构,该模式的核心思想将访问和遍历容器对象的功能交给一个外部的迭代器对象,该迭代器定义了访问聚合对象的接口, 类视图 实现 class ...
迭代器模式(Iterator Pattern)是一种非常常用的设计模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 介绍 意图: 提供一种方法顺序访问一个聚合对象中各个...
迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。 提供一种可以遍历聚合对象的方式。又称为:游标cursor模式 聚合对象:存储数据 ...
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 何时使用迭代器模式? 当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器...
迭代器模式(Iterator Pattern):提供方法顺序访问一个聚合对象中各元素,而又不暴露该对象的内部表示. 下面是一个迭代器模式的demo: #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' """ 大话...
在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素而又不暴露该对象的内部表示,这就是PHP迭代器模式的定义。 适用场景: 访问一个聚合对象的内容而无需暴露它的内部表示 支持对聚合对象的多种遍历 为遍历...
Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露...
迭代器模式:提供一种方法顺序访问一个聚合对象中个各个元素,而不暴露该对像的内部表示. 迭代器模式应该是最为熟悉的模式了,最简单的证明就是我在实现组合模式、享元模式、观察者模式中就直接用到了 STL 提供的迭代...
自定义语言的实现——解释器模式(五) 自定义语言的实现——解释器模式(六) 迭代器模式-Iterator Pattern 遍历聚合对象中的元素——迭代器模式(一) 遍历聚合对象中的元素——迭代器模式(二) 遍历聚合对象中的...
迭代器模式(Iterator):提供一种方法顺序一个聚合对象中各个元素,而又不暴露该对象内部表示。 迭代器的几个特点是: 1.访问一个聚合对象的内容而无需暴露它的内部表示。 2.为遍历不同的集合结构提供一个统一的接口...
迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。 访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素...
什么是迭代器 迭代器就是为实现对不同集合进行统一遍历操作的一种机制,只要给需要遍历的数据结构部署Iterator接口,通过...迭代器模式,提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示
16)迭代器模式(Iterator) 17)中介模式(Mediator) 18)备忘录模式(Memento) 19)观察者模式(Observer) 20)状态模式(State) 21)策略模式(Strategy) 22)模版模式(Template) 23)访问者模式(Visitor...
本文实例讲述了PHP聚合式迭代器接口IteratorAggregate用法。分享给大家供大家参考,具体如下: PHP IteratorAggregate又叫聚合式迭代器,它提供了... * 利用聚合式迭代器,并返回一个实现了Iterator接口的类的实例 *