- 浏览: 170250 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (193)
- Axis2 (10)
- Andriod (2)
- Java (22)
- Eclipse (2)
- 程序人生 (3)
- Windows (1)
- Sql Server 2005/2008 (7)
- 健身 (2)
- Log4j (1)
- Ant (1)
- Fatjar (2)
- 国际化 (1)
- Linux (3)
- JDBC (1)
- Oracle (2)
- 各种报错 (4)
- SWT (5)
- Tomcat (2)
- 车辆管理 (1)
- SVN (2)
- Spring (5)
- 域名服务器 (0)
- HaoWaYa (1)
- FTP (1)
- 集散中心 (1)
- 专业知识 (1)
- 面试准备 (19)
- 设计模式 (22)
- Junit (1)
- 软件下载 (3)
- 深入理解Java虚拟机 (3)
- 数据结构 (4)
- 雅思 托福 (0)
- UML (1)
- Maven (1)
- CV (1)
- ServiceMix (1)
- 电子书 (5)
- Struts1/2 (4)
- DOM W3C DHTML (3)
- Jawr (1)
- LoadRunner (1)
- Java反编译 (0)
- 英语学习 (0)
- 技术书籍 (1)
- Cygwin (0)
- ibatis (1)
- 数据库 (1)
- jQuery (0)
- s (2)
- 源代码项目 (5)
- JSRs (0)
- JCP (0)
- XML (2)
- Dojo (3)
- Effective Java (1)
- 一站到底 (3)
- JavaScript (6)
- DB2 (1)
- 刷机 (1)
- 字符 (1)
- Dynamic Web Project (1)
- 股市日记 (1)
- 代码片段 (0)
- CSS (1)
- PDF (0)
- 英语口语 (1)
- 乒乓球 (1)
- 体检 (0)
- 送花 (0)
- 面试准备-再战江湖 (5)
- ddq (0)
- sss (0)
- ssssss (0)
- 2020面试 (0)
最新评论
-
samsongbest:
Copperfield 写道你的目标很远大,佩服~惭愧,都忘了 ...
人生目标 -
Copperfield:
你的目标很远大,佩服~
人生目标
1.用意
迭代子模式又叫游标模式,可以顺序地访问一个聚集中的元素而不必暴露聚集的内部表象。
2.类图
白箱聚集与外禀迭代子
黑箱聚集与内禀迭代子
3.代码
白箱聚集与外禀迭代子
/* * 抽象聚集角色 */ public abstract class Aggregate { public Iterator createIterator() { return null; } } /* * 具体聚集角色 */ public class ConcreteAggregate extends Aggregate { private Object[] objs = { "Monk Tang", "Monkey", "Pigsy", "Sandy", "Horse" }; public Iterator createIterator() { return new ConcreteIterator(this); } public Object getElement(int index) { if (index < objs.length) { return objs[index]; } else { return null; } } public int size() { return objs.length; } } /* * 抽象迭代子角色 */ public interface Iterator { void first(); void next(); boolean isDone(); Object currentItem(); } /* * 具体迭代子角色 */ public class ConcreteIterator implements Iterator { private ConcreteAggregate agg; private int index = 0; private int size = 0; public ConcreteIterator(ConcreteAggregate agg) { this.agg = agg; size = agg.size(); index = 0; } /* * 移动到第一个元素 * @see com.javapatterns.iterator.whitebox.Iterator#first() */ public void first() { index = 0; } /* * 移动到下一个元素 * @see com.javapatterns.iterator.whitebox.Iterator#next() */ public void next() { if (index < size) { index++; } } /* * 是否是第一个元素 * @see com.javapatterns.iterator.whitebox.Iterator#isDone() */ public boolean isDone() { return (index >= size); } /* * 返还当前元素 * @see com.javapatterns.iterator.whitebox.Iterator#currentItem() */ public Object currentItem() { return agg.getElement(index); } } /* * 测试类 */ public class Test { public static void main(String[] args) { ConcreteAggregate agg = new ConcreteAggregate(); Iterator ite = agg.createIterator(); for (int i = 0; i < agg.size(); i++) { S.s(ite.currentItem()); ite.next(); } } }
输出:
黑箱聚集与内禀迭代子
/* * 抽象聚集角色 */ public abstract class Aggregate { public abstract Iterator createIterator(); } /* * 具体聚集角色 */ public class ConcreteAggregate extends Aggregate { private Object[] objs = { "Monk Tang", "Monkey", "Pigsy", "Sandy", "Horse" }; public Iterator createIterator() { return new ConcreteIterator(); } /* * 具体迭代子角色 */ private class ConcreteIterator implements Iterator { private int currentIndex = 0; /* * 移动到第一个元素 * @see com.javapatterns.iterator.whitebox.Iterator#first() */ public void first() { currentIndex = 0; } /* * 移动到下一个元素 * @see com.javapatterns.iterator.whitebox.Iterator#next() */ public void next() { if (currentIndex < objs.length) { currentIndex++; } } /* * 是否是最后一个元素 * @see com.javapatterns.iterator.whitebox.Iterator#isDone() */ public boolean isDone() { return (currentIndex == objs.length); } /* * 返还当前元素 * @see com.javapatterns.iterator.whitebox.Iterator#currentItem() */ public Object currentItem() { return objs[currentIndex]; } } } /* * 抽象迭代子角色 */ public interface Iterator { void first(); void next(); boolean isDone(); Object currentItem(); } /* * 测试类 */ public class Test { private Iterator it; private Aggregate agg = new ConcreteAggregate(); public void operation() { it = agg.createIterator(); while (!it.isDone()) { S.s(it.currentItem().toString()); it.next(); } } public static void main(String[] args) { Test test = new Test(); test.operation(); } }
z
发表评论
-
22 行为模式 - 调停者(Mediator)模式
2012-08-23 10:21 8261.用意 调停者模式包装了一系列对象相互 ... -
21 行为模式 - 解释器(Interpreter)模式
2012-08-23 10:18 7591.用意 给定一个语言之后,解释器模式可以定 ... -
20 行为模式 - 访问者(Visitor)模式
2012-08-22 10:28 8591.用意 封装一些施加于某种数据结构元素之上的操 ... -
19 行为模式 - 状态(State)模式
2012-08-22 10:25 7491.用意 状态模式允许一个对象在其内部状态改变的时候 ... -
18 行为模式 - 备忘录(Memento)模式
2012-08-22 10:12 838需要跟进多重检查点 ... -
17 行为模式 - 命令(Command)模式
2012-08-20 10:29 5631.用意 命令模式把一个请求或者操作封装到一个对象中。命令模 ... -
16 行为模式 - 责任链(Chain of Responsibility)模式
2012-08-20 10:24 7521.用意 在责任链模式里,很多对象由每一个对象对其下家的引用 ... -
14 行为模式 - 观察者(Observer)模式
2012-08-09 10:27 8051.用意 观察者模式定义了一种一对多的依赖关系,让多个观察者 ... -
13 行为模式 - 模板方法(Template Method)模式
2012-08-09 10:21 6851.用意 准备一个抽象类,将部分逻辑以具体方法以及具体构造子 ... -
12 行为模式 - 策略(Strategy)模式
2012-08-07 10:00 7191.用意 针对一组算法,将每一个算法封装到具有共同接口的 ... -
11 结构模式 - 桥梁(Bridge)模式
2012-08-01 10:01 7301.用意 2.类图 3.代码 z 1.用意 将 ... -
10 结构模式 - 门面(Facade)模式
2012-07-31 13:52 6761.含义 外部与一个子系统的通信必须通过一个统一的门面对象进 ... -
09 结构模式 - 享元(Flyweight)模式
2012-07-31 13:47 8071.含义 享元模式以共享的方式高效地支持大量的细粒度对象。 ... -
8 代理(Proxy)模式
2012-07-31 09:48 8941.含义 代理模式给某一个对象提供一个代理对象,并由代理对象 ... -
7 装饰(Decorator)模式
2012-07-27 14:03 6971.含义 装饰模式又名包装(Wrapper)模式,以对客户端 ... -
6 合成(Composite)模式
2012-07-27 14:02 7651.含义 合成模式把部分和整体的关系用树结构表示出来。合成模 ... -
5 适配器(Adapter)模式
2012-07-27 13:52 7351. 含义 把一个类的接口变换成客户端所期待的另一种接口,从 ... -
4 原始模型(Prototype)模式
2012-07-27 10:49 7891. 含义 通过给出一个原型对象来指明所要创建的对象的类型, ... -
3 建造(Builder)模式
2012-07-27 09:44 7091.含义:建造模式可以将一个产品的内部表象与产品的生成过程分割 ... -
1 抽象工厂(Abstract Factory)模式
2012-07-26 17:54 7331.类图 2.类 Creator ...
相关推荐
迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如ArrayList、LinkedList等。本示例将深入探讨如何在Java中实现和使用迭代器...
### (行为型模式) Iterator 迭代器模式 #### 概述 在软件工程领域,设计模式被广泛应用于解决常见的编程问题。其中,“迭代器模式”作为一种行为型设计模式,在处理集合类对象时发挥着重要作用。本文将详细介绍...
迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。这种模式允许我们遍历集合中的每个元素,同时保持集合本身抽象,不需了解其内部结构。 在Java、C#等面向对象语言...
Java 迭代器模式是一种行为设计模式,它提供了一种访问集合对象元素的方法,而不需要暴露该对象的内部表示。该模式适用于需要遍历集合对象的场景,例如数组、列表、树等。 迭代器模式的主要优点是: 1. 避免了集合...
### 三、Iterator模式的优势 使用`Iterator`模式遍历集合具有以下优势: 1. **解耦访问逻辑**:客户端代码无需了解集合的具体实现,这使得修改集合实现时不会影响到客户端代码。 2. **简化客户端代码**:通过`...
迭代器模式是软件设计模式中的一种行为模式,它在Android开发中被广泛应用,尤其是在处理集合对象的遍历操作时。这种模式提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java或Android编程中,...
1. **分离遍历行为**:迭代器模式将遍历操作与聚合对象的定义分离,使得两者可以独立变化。 2. **支持多种遍历方式**:可以为同一聚合对象提供不同类型的迭代器,实现不同的遍历顺序。 3. **增强了对聚合类的透明性*...
迭代器模式是软件设计模式中的一种行为模式,其主要目的是为了在不暴露聚合对象内部结构的情况下,提供一种顺序访问聚合对象中各个元素的方式。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等...
迭代器模式是软件设计模式中的一种行为模式,它在编程中扮演着重要的角色,尤其是在处理集合数据时。迭代器模式的核心思想是提供一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。这种模式使得用户可以在不...
迭代器模式是软件设计模式中的一种行为模式,它在C#等面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户遍历一个聚合对象(如数组、集合或列表)的所有元素,而无需了解底层的实现细节。下面将详细...
迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...
迭代器设计模式是一种常用的行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。这个“iterator-demo”应该是一个示例项目,用于演示如何在实际编程中应用迭代器模式。下面我们将深入...
迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而不暴露其底层表示。在Java中,迭代器模式广泛用于遍历集合类,如ArrayList、LinkedList、HashSet和HashMap等。通过迭代器,我们可以...
迭代模式是一种行为设计模式,它允许我们通过统一的接口遍历集合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛使用,尤其是在集合类库中,如ArrayList、LinkedList等。下面我们...
迭代器模式(Iterator Pattern),也被称作游标(Cursor)模式,是软件工程设计模式中的一种行为型模式。该模式的主要目的是提供一种方法来访问一个容器(container)对象中的各个元素,而无需暴露容器的内部结构或...
迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...
迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在本文中,我们将深入探讨迭代器模式的概念,并通过Python和C++两种编程语言展示其实现。 首先,理解迭代器模式...
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不... 这是第18节:行为型模式Iterator迭代器模式
迭代器模式是23种设计模式之一,属于行为型模式。它提供了一种访问聚合对象元素的方式,而不需要暴露该对象的内部实现。迭代器模式的主要目的是让开发者能够轻松地遍历聚合对象中的元素,而不需要关心对象的内部实现...