- 浏览: 1436923 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (409)
- Java (48)
- Spring (29)
- struts2 (17)
- hibernate (4)
- 设计模式 (24)
- jbpm (1)
- JavaScript (5)
- 统计报表 (7)
- ExtJS_3.0 (35)
- struts1 (1)
- 分析设计 (3)
- Flex3 (24)
- UML (2)
- 数据库 (18)
- PowerDesigner (2)
- 应用服务器 (3)
- WebService (5)
- ActiveMQ_5.3.2 (6)
- Java通信技术 (11)
- GWT (6)
- OSGi (15)
- android (11)
- liferay6.0.6 (13)
- jquery (13)
- Linux (3)
- java.util.concurrent (16)
- guava (9)
- 开发模式 (1)
- 大数据 (2)
- 互联网金融 (4)
- treegrid-3.0 (7)
- 分布式 (8)
- GO语言 (4)
- maven (1)
- 缓存技术 (6)
- 其他 (2)
- 前端页面 (1)
- heasy (1)
- spring cloud(F版) (21)
- springboot (12)
- springmvc (5)
- mybatis (3)
- dubbo (1)
- 物联网 (0)
最新评论
-
raymond.chen:
谢谢您的分享
使用Ngrok解决通过外网访问内网web应用 -
wangyudong:
速度有点慢,不过在也找到了一个开源的holer,配置一个key ...
使用Ngrok解决通过外网访问内网web应用 -
a1006458222:
...
Axis2的部署和应用 -
偷师来了:
不好意思 这样的博客我觉得就灭有必要分享出来了 命令大家都会看 ...
Consul框架介绍 -
lliiqiang:
怎么直接删除文件夹啊?固定的几个文件可以删除,不固定的呢?需要 ...
Flex AIR —— 文件读写
提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。
在迭代器模式中,具体迭代器角色和具体容器角色是耦合在一起的 —— 遍历算法是与容器的内部细节紧密相关的。为了使客户程序从与具体迭代器角色耦合的困境中脱离出来,避免具体迭代器角色的更换给客户程序带来的修改,迭代器模式抽象了具体迭代器角色,使得客户程序更具一般性和重用性。这被称为多态迭代。
迭代器模式给容器的应用带来以下好处:
1、支持以不同的方式遍历一个容器角色。根据实现方式的不同,效果上会有差别。
2、简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。
3、对同一个容器对象,可以同时进行多个遍历。因为遍历状态是保存在每一个迭代器对象中的。
聚合接口类:
public interface Aggregate<E>{ /** * Iterator的泛型由Aggregate决定 */ public Iterator<E> createIterator(); public int length(); public E get(int index); public void add(E obj); }
聚合实现类:
public class ConcreteAggregate<E> implements Aggregate<E>{ private List<E> items = new ArrayList<E>(); public Iterator<E> createIterator() { return new ConcreteIterator<E>(this); } public int length(){ return items.size(); } public E get(int index){ return (E)items.get(index); } public void add(E obj){ items.add(obj); } }
遍历器接口类:
public interface Iterator<E>{ public E first(); public boolean hasNext(); public E next(); public E current(); }
遍历器实现类:
public class ConcreteIterator<E> implements Iterator<E>{ private Aggregate<E> aggregate; private int currentIndex = 0; //遍历状态 public ConcreteIterator(Aggregate<E> aggregate){ this.aggregate = aggregate; } public E first() { currentIndex = 0; if(hasNext()){ return aggregate.get(currentIndex); }else{ return null; } } public boolean hasNext() { return (currentIndex < aggregate.length()); } public E next() { currentIndex++; if(hasNext()){ return aggregate.get(currentIndex); }else{ return null; } } public E current(){ return aggregate.get(currentIndex); } }
测试类:
public class Test { public static void main(String[] args) { Aggregate<String> a = new ConcreteAggregate<String>(); a.add("111"); a.add("222"); a.add("333"); Iterator<String> it = a.createIterator(); for(String s=it.first();it.hasNext();s=it.next()){ System.out.println(s); } } }
发表评论
-
设计模式概述
2015-10-11 00:17 876设计模式(Design pattern ... -
备忘录模式(Memento Pattern)
2010-04-10 22:58 1390在不破坏封装的前提下,捕获并且保持一个对象的内部状态,这样可以 ... -
中介者模式(Mediator Pattern)
2010-04-10 17:45 2040定义一个对象封装一系列的对象交互,使得对象之间不需要显式地相互 ... -
解析器模式范例:阿拉伯数字金额转为中文数字金额
2010-03-31 20:27 1830表达式抽象类: public abstract class ... -
解析器模式(Interpreter Pattern)
2010-03-30 21:29 2029定义语言的文法,并且建立一个解释器来解释该语言中的句子。 ... -
命令模式(Command Pattern)
2010-03-29 21:34 1685命令模式本质是对命令的封装,从而把发出命令的责任和执行命令的责 ... -
责任链模式(Chain of Responsibility Pattern)
2010-03-28 11:28 1502责任链是用一系列类试图处理一个请求,这些类之间是一个松散的耦合 ... -
代理模式(Proxy Pattern)
2010-03-26 22:27 1518为其他对象提供一种 ... -
轻量级模式(Flyweight Pattern)
2010-03-25 23:47 1982轻量级模式实现对象的共享,从而减少内存分配的开销。该模式通常和 ... -
外观模式(Facade Pattern)
2010-03-25 22:39 1416外观模式,为子系统的一组接口提供一个统一的界面,此模式定义了 ... -
装饰模式(Decorator Pattern)
2010-01-28 23:50 2867动态给一个对象添加一些额外的职责。使用Decorator模式相 ... -
组合模式(Composite Pattern)
2010-01-26 22:22 4947组合模式主要是应对这样的问题:一类具有“容器特征”的对象 —— ... -
建造者模式(Builder Pattern)
2010-01-24 22:11 1395将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创 ... -
状态模式(State Pattern)
2010-01-11 20:29 1461一、状态模式需要两种类型实体参与: 1、状态管理器 ... -
桥接模式(Bridge Pattern)
2009-05-05 09:29 1383将抽象部分与实现部分分离,使得它们两部分可以独立地变化。 ... -
适配器模式(Adapter Pattern)
2009-04-10 13:08 1473将一个接口转换成为客户想要的另一个接口,适配器模式使接口不兼容 ... -
观察者模式(Observer Pattern)
2009-03-26 17:58 1536一、概念 定义对象间的一种一对多依赖关系,使得每当一 ... -
访问者模式(Visitor Pattern)
2009-03-23 16:21 1690一、概念 在不修改已有程序结构的前提下,通过添 ... -
策略模式(Strategy Pattern)
2009-03-18 15:21 1454策略模式的本质:少用继承,多用组合。 策略模式属于对象的行 ... -
设计模式应用范例(一):上行短信管理器
2009-03-17 18:19 2380Spring AOP的应用:在处理业务短信之前,可以 ...
相关推荐
迭代器模式是软件设计模式中的一种行为模式,它在C#等面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户遍历一个聚合对象(如数组、集合或列表)的所有元素,而无需了解底层的实现细节。下面将详细...
迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又...
迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...
迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...
14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、...
在迭代器模式中,存在三个主要角色:迭代器(Iterator)、聚合对象(Aggregate)和客户端(Client)。迭代器负责遍历聚合对象中的元素,聚合对象提供了元素的集合,而客户端则使用迭代器来遍历聚合对象中的元素。 ...
在Java中,迭代器模式的实现通常使用`Iterable`接口和`Iterator`接口。`Iterable`接口定义了一个`iterator()`方法,返回一个`Iterator`实例。`Iterator`接口则包含`hasNext()`和`next()`方法。 ```java public ...
在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...
在这个主题中,我们主要探讨了如何利用组合模式(Composite Pattern)构建二叉树,并通过迭代器模式(Iterator Pattern)来实现对树的遍历,包括前序、中序和后序遍历。这些是设计模式中的经典应用,对于理解和掌握...
迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)是设计模式中的两种重要结构型模式,它们在软件设计中有着广泛的应用。这两种模式都属于GoF(Gang of Four)设计模式,旨在解决特定的问题,提升代码...
迭代器模式(Iterator Pattern)又称为游标(Cursor)模式,是行为型设计模式之一。该模式的主要目的是提供一种方法顺序访问一个容器对象中的各个元素,而又不需要暴露该对象的内部表示。 一、迭代器模式的概念 ...
迭代器模式(Iterator Pattern) 基本介绍 迭代器模式,提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构。 提供一种可以遍历聚合对象的方式。又...
迭代器模式是一种设计模式,它允许程序访问聚合对象的元素,而无需暴露其底层表示。在C#中,迭代器模式常用于遍历各种类型的集合,如数组、列表或自定义集合。通过这种方式,迭代器提供了统一的接口,使得代码可以以...
在给定的资源中,`IteratorPattern.cpp`和`IteratorPattern.h`是实现迭代器模式的源代码文件。通常,`IteratorPattern.cpp`包含类的实现细节,而`IteratorPattern.h`则包含类的声明和接口。这两个文件可能会定义以下...
迭代器模式(Iterator Pattern)属于行为型设计模式之一,它的主要目的是为集合对象提供一种方法,以便能够顺序地访问其元素,而无需暴露集合的内部结构。通过这种方式,可以将迭代行为从集合类中分离出来,使得集合...
在Java语言中,迭代器模式(Iterator Pattern)是一种行为型设计模式,它的主要目的是为了提供一种方法来访问一个容器对象中各个元素,而又不暴露该对象的内部细节。这种模式允许我们在不知道容器内部结构的情况下...
迭代器模式(Iterator Pattern)是设计模式中的一种行为型模式,它主要用于处理聚合对象(如列表、集合等)。此模式的核心目的是提供一种方法来访问聚合对象中的元素,同时不需要暴露聚合对象的内部结构。 在软件...
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 迭代器模式 java demo
同时,由于Swift的`Sequence`和`Iterator`协议的存在,大部分情况下我们并不需要手动实现完整的迭代器模式,而是可以直接利用语言特性进行迭代。 总之,迭代器模式是软件设计中的一个重要工具,它提供了遍历聚合...
迭代器模式(Iterator Pattern)是设计模式中的一种对象行为型模式,主要解决如何在不暴露内部结构的情况下遍历一个聚合对象的问题。在PHP中,迭代器模式允许我们以一致的方式遍历不同类型的集合,比如数组、对象...