- 浏览: 18303 次
- 性别:
- 来自: 西安
最新评论
Iterator Pattern:其意图是提供一种方法顺序访问一个聚合对象中得各个元素,而又不需要暴露该对象的内部表示.
下面以Boss输出各个Department中的所有Clerk为例(各个部门对Clerk的内部表示不同,如有的用Array,有的用List,Map......):
Clerk.java
package com.flyingh.bean; import com.flyingh.util.Sex; public class Clerk { private String id; private String name; private int age; private Sex sex; private float salary; public Clerk(String id, String name, int age, Sex sex, float salary) { super(); this.id = id; this.name = name; this.age = age; this.sex = sex; this.salary = salary; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Sex getSex() { return sex; } public void setSex(Sex sex) { this.sex = sex; } public float getSalary() { return salary; } public void setSalary(float salary) { this.salary = salary; } @Override public String toString() { return "Clerk [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", salary=" + salary + "]"; } }
Sex.java
package com.flyingh.util; public enum Sex { man, woman; }
Depart.java
package com.flyingh.idepart; import java.util.Iterator; import com.flyingh.bean.Clerk; public interface Depart { Iterator<Clerk> createIterator(); }
DepartA.java
package com.flyingh.depart; import java.util.Arrays; import java.util.Iterator; import com.flyingh.bean.Clerk; import com.flyingh.idepart.Depart; import com.flyingh.util.Sex; public class DepartA implements Depart { private Clerk[] clerks = { new Clerk("A1", "zhangsan", 22, Sex.man, 6500), new Clerk("A2", "lisi", 23, Sex.woman, 7800), new Clerk("A3", "wangwu", 27, Sex.man, 8500), new Clerk("A4", "zhaoliu", 22, Sex.man, 7000) };; @Override public Iterator<Clerk> createIterator() { // TODO Auto-generated method stub return Arrays.asList(clerks).iterator(); } }
DepartB.java
package com.flyingh.depart; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.flyingh.bean.Clerk; import com.flyingh.idepart.Depart; import com.flyingh.util.Sex; public class DepartB implements Depart { private List<Clerk> list = new ArrayList<Clerk>(); public DepartB() { super(); list.add(new Clerk("B1", "sunqi", 21, Sex.woman, 6780)); list.add(new Clerk("B2", "qianba", 23, Sex.man, 8888)); list.add(new Clerk("B3", "xiaohua", 21, Sex.woman, 6580)); list.add(new Clerk("B4", "wuguang", 24, Sex.man, 7450)); } @Override public Iterator<Clerk> createIterator() { // TODO Auto-generated method stub return list.iterator(); } }
DepartC.java
package com.flyingh.depart; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import com.flyingh.bean.Clerk; import com.flyingh.idepart.Depart; import com.flyingh.util.Sex; public class DepartC implements Depart { private Map<String, Clerk> map = new HashMap<String, Clerk>(); public DepartC() { super(); map.put("C1", new Clerk("C1", "haha", 25, Sex.man, 7800)); map.put("C2", new Clerk("C2", "xixi", 23, Sex.woman, 7000)); map.put("C3", new Clerk("C3", "hehe", 26, Sex.man, 9000)); map.put("C4", new Clerk("C4", "heihei", 20, Sex.woman, 6500)); } @Override public Iterator<Clerk> createIterator() { // TODO Auto-generated method stub return map.values().iterator(); } }
Boss.java
package com.flyingh.bean; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.flyingh.idepart.Depart; public class Boss { private Depart departA; private Depart departB; private Depart departC; private List<Iterator<Clerk>> list = new ArrayList<Iterator<Clerk>>(); public Boss(Depart departA, Depart departB, Depart departC) { super(); this.departA = departA; this.departB = departB; this.departC = departC; list.add(departA.createIterator()); list.add(departB.createIterator()); list.add(departC.createIterator()); } public Depart getDepartA() { return departA; } public void setDepartA(Depart departA) { this.departA = departA; } public Depart getDepartB() { return departB; } public void setDepartB(Depart departB) { this.departB = departB; } public Depart getDepartC() { return departC; } public void setDepartC(Depart departC) { this.departC = departC; } public void printAllClerk() { System.out .println("*****************all clerks' info:******************"); for (Iterator<Clerk> iter : list) { while (iter.hasNext()) { System.out.println(iter.next()); } } } }
Client.java
package com.flyingh.client; import com.flyingh.bean.Boss; import com.flyingh.depart.DepartA; import com.flyingh.depart.DepartB; import com.flyingh.depart.DepartC; import com.flyingh.idepart.Depart; public class Client { public static void main(String[] args) { Depart departA = new DepartA(); Depart departB = new DepartB(); Depart departC = new DepartC(); Boss boss = new Boss(departA, departB, departC); boss.printAllClerk(); } }
程序运行结果如下:
*****************all clerks' info:****************** Clerk [id=A1, name=zhangsan, age=22, sex=man, salary=6500.0] Clerk [id=A2, name=lisi, age=23, sex=woman, salary=7800.0] Clerk [id=A3, name=wangwu, age=27, sex=man, salary=8500.0] Clerk [id=A4, name=zhaoliu, age=22, sex=man, salary=7000.0] Clerk [id=B1, name=sunqi, age=21, sex=woman, salary=6780.0] Clerk [id=B2, name=qianba, age=23, sex=man, salary=8888.0] Clerk [id=B3, name=xiaohua, age=21, sex=woman, salary=6580.0] Clerk [id=B4, name=wuguang, age=24, sex=man, salary=7450.0] Clerk [id=C4, name=heihei, age=20, sex=woman, salary=6500.0] Clerk [id=C3, name=hehe, age=26, sex=man, salary=9000.0] Clerk [id=C1, name=haha, age=25, sex=man, salary=7800.0] Clerk [id=C2, name=xixi, age=23, sex=woman, salary=7000.0]
发表评论
文章已被作者锁定,不允许评论。
-
Interpreter
2011-11-24 21:19 839Interpreter Pattern:其意图是给定一个语言, ... -
Visitor
2011-11-24 17:37 659Visitor Pattern:表示一个作用于某对象结构中的各 ... -
Mediator
2011-11-24 16:22 662Mediator Pattern: 用一 ... -
Prototype
2011-11-24 11:32 605Prototype Pattern:就是通过复制现在已经存在的 ... -
Memento
2011-11-23 21:56 685Memento Pattern:在不破坏封闭的前提下,捕获一个 ... -
Flyweight
2011-11-23 18:38 651享元模式以共享的方式高效地支持大量的细粒度对象. 1).Fl ... -
Builder
2011-11-22 16:38 763Builder Pattern:可以将一个产品的内部表象与产品 ... -
Bridge
2011-11-22 15:05 684桥梁模式的用意是"将抽象化(Abstraction) ... -
Chain Of Responsibility
2011-11-21 23:05 658Chain Of Responsibility Pattern ... -
Abstract Factory
2011-11-21 22:00 644下面以Mac和PC的CPU和RAM为例,代码如下: Cpu. ... -
Proxy
2011-11-18 18:47 661Proxy Pattern:对其他对象提供一种代理以控制对这个 ... -
State
2011-11-18 15:57 678State Pattern:当一个对象的内在状态改变时允许改变 ... -
Composite
2011-11-17 17:09 793Composite Pattern:意图是将对象组合成树形结构 ... -
Template Method
2011-11-16 11:43 659模板方法模式:在一个方法中定义一个算法的骨架,而将一些实 ... -
Facade
2011-11-15 23:00 596Facade Pattern:为子系统中的各类(或结构与方法) ... -
Adapter
2011-11-15 21:43 630Adapter Pattern:将一个类的接口,转换成客户所期 ... -
Command
2011-11-14 23:06 5721).下面以Boss和Clerk为例: Clerk.java ... -
Factory Method
2011-11-13 20:44 595Simple Factory: 以Fruit为例,以下是实现 ... -
Decorator
2011-11-12 23:09 570装饰者可以在所委托被装饰者的行为之前与/或之后,加上自己的 ... -
Observer
2011-11-12 21:30 600观 察 者 模 式 定义了对象之间的一对多依赖,这样一来 ...
相关推荐
Boost库中的`iterator_adaptor`是一个强大的工具,用于创建自定义迭代器。这个模板类允许程序员以一种灵活的方式包装现有的迭代器类型,以适应特定的需求或扩展其功能。`iterator_adaptor`的设计理念是基于`iterator...
在Struts2框架中,`iterator`标签是一个非常重要的组件,用于遍历各种集合对象,如List、Map等。在上述描述中,开发者遇到了一个关于`iterator`标签嵌套使用的问题,涉及到`LinkedHashMap`存储的数据结构。让我们...
ArrayList提供了一种高效的方式来管理大量的元素,并且提供了迭代器(Iterator)来遍历这些元素,使得我们可以在不暴露底层实现细节的情况下访问和修改列表中的元素。这个资源的目的是通过模拟Java ArrayList的...
一个运用Extjs,Struts2, json,iterator技术构建的iterator_jsonDemo2。iterator_jsonDemo1的链接:http://download.csdn.net/detail/cafebar123/8816409 运用了Extjs,Struts2, json,iterator技术, 将数据从...
### Iterator迭代器详解 #### 一、Iterator简介与概念 在Java编程语言中,`Iterator`接口是一个重要的组件,它提供了遍历集合的基本方法。`Iterator`的主要作用是在不暴露集合内部结构的情况下,顺序访问集合中的...
根据提供的文件信息,本文将深入探讨Java中的`java.util.Iterator`接口及其在集合类中的应用。我们将从以下几个方面进行详细解析: ### 一、集合类的根接口:Collection `Collection`接口是Java集合框架的基础,它...
### Struts2中Iterator标签的深入解析与应用 在Struts2框架中,`<s:iterator>`标签是一个非常强大的工具,用于在JSP页面上循环遍历集合数据,如列表(List)、数组、Map等。它允许开发者以一种动态且灵活的方式展示...
在Java编程中,`iterator()`方法是集合框架中非常关键的一部分,主要用于遍历集合中的元素。当你遇到“方法iterator()找不着的问题”时,这通常意味着你在尝试使用`iterator()`时遇到了错误,可能是由于以下几个原因...
在Struts2框架中,`<s:iterator>`标签被广泛用于遍历集合或数组等数据结构。本文将深入探讨如何使用Struts2中的`<s:iterator>`标签来遍历二维数组,并通过实例代码来具体说明其用法。 ### Struts2 Iterator标签 ##...
在Java编程语言中,`Iterator`接口和`Iterable`接口是处理集合数据的重要工具,而JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于数据传输和存储。这个"iterator_jsonDemo"实例结合了这...
首先,C++标准库定义了五种不同类型的迭代器:输入迭代器(Input Iterator)、输出迭代器(Output Iterator)、前向迭代器(Forward Iterator)、双向迭代器(Bidirectional Iterator)和随机访问迭代器(Random ...
### Java源码分析:深入探讨Iterator模式 #### 一、引言 在Java编程语言中,集合框架(`java.util`包)提供了多种容器类来存储对象,如`List`、`Set`和`Map`等。为了遍历这些容器中的元素,Java引入了迭代器模式...
在Struts2框架中,`<s:iterator>`标签是一个非常强大的工具,用于遍历集合或数组中的元素,尤其在处理列表数据时极为有用。通过本文档提供的代码示例,我们将深入探讨`<s:iterator>`标签的使用方法及其与不同数据...
使用 Iterator 接口遍历集合元素 Java 集合框架中的 Iterator 接口是一种非常重要的接口,它主要用于遍历集合中的元素。Iterator 接口隐藏了各种 Collection 实现类的底层细节,向应用程序提供了遍历 Collection ...
Iterator<String> iterator = list.iterator(); while (iterator.hasNext()) { String element = iterator.next(); System.out.println(element); } ``` ### Java集合框架概述 #### 1. 集合框架简介 Java集合...
### JAVA中的Iterator的用法详解 #### 一、概述 在Java编程语言中,`Iterator`接口扮演着遍历集合的重要角色。它提供了一种方式,使得开发人员能够以一致的方式遍历各种类型的集合,无需了解集合的具体实现细节。...
在Java编程语言中,`Iterator`接口是集合框架的核心部分,它允许我们遍历集合中的元素,而无需暴露集合的内部结构。这个设计模式被称为迭代器模式,它为访问聚合对象(如数组、集合等)提供了一种统一的接口。在本...
"for、foreach、iterator的用法和区别" 在 Java 编程语言中,for、foreach 和 iterator 是三种常用的遍历数组和集合的方法。它们之间有相似之处,但也存在着许多不同之处。 相同点:三者都可以用来遍历数组和集合...
Iterator模式是一种设计模式,主要用于遍历容器(如集合、数组)中的元素,提供了一种统一的访问方式,而无需暴露容器的内部结构。在Java中,`java.util.Iterator`接口就是这种模式的一个典型应用。在给定的文档中,...
JSP 自定义标签 Iterator 遍历 List 本文主要介绍了在 JSP 中使用自定义标签 Iterator 遍历 List,并对标签的实现过程进行了详细的解释。 标签的概念和作用 在 JSP 中,标签是一种特殊的组件,它可以根据需要执行...