`
sunnylocus
  • 浏览: 869952 次
  • 性别: Icon_minigender_1
  • 来自: 美国图森
社区版块
存档分类
最新评论

Java设计模式—迭代器(Iterator)

    博客分类:
  • Java
阅读更多

1.Aggregate接口所声明的方法只有iterator方法一个,这是为了建立一个对对应聚合的
iterator

package com.pattern.iterator;

public interface Aggregate {
	public abstract Iterator iterator();
}



2.iterator接口,执行元素递增,具有类似循环变量的功能。

package com.pattern.iterator;
public interface Iterator {
	public abstract boolean hasNext();
	public abstract Object next();
}




3. 书籍类

package com.pattern.iterator;
public class Book {
	private String name="";

	public Book(String name) {
		this.name = name;
	}
	
	/**
	 * 获得书籍名称
	 * @return String
	 */
	public String getName() {
		return name;
	}
}



4.书架类

package com.pattern.iterator;
/**
 * 书架类
 * @author administrator
 */
public class BookShelf implements Aggregate{
	private Book[] books;
	private int last = 0;
	
	public BookShelf(int maxSize) {
		this.books = new Book[maxSize];
	}
	
	public Book getBookAt(int index) {
		return books[index];
	}
	
	//添加书籍
	public void appendBook(Book book) {
		this.books[last] = book;
		last++;
	}
	//获得书架存书的数量
	public int getLength() {
		return books.length;
	}
                //获得书架迭代器对象
	public Iterator iterator() {
		return new BookShelfIterator(this);
	}
	
}


5.书架迭代器类

package com.pattern.iterator;
public class BookShelfIterator implements Iterator{
	private BookShelf bookShelf;
	private int index;
	
	public BookShelfIterator(BookShelf bookShelf) {
		this.bookShelf = bookShelf;
		this.index = 0;
	}
	
	//检查是否还有下一本书
	public boolean hasNext() {
		if(index < bookShelf.getLength()) {
			return true;
		}
		else {
			return false;
		}
	}
	//返回指定位置的书籍
	public Object next() {
		Book book = bookShelf.getBookAt(index);
		index ++;
		return book;
	}
}




6.测试类

package com.pattern.iterator;

public class Main {
	public static void main(String[] args) {
		//生成一个书架
		BookShelf bookShelf = new BookShelf(4);
		//向书架添加书籍
		bookShelf.appendBook(new Book("周恩来的晚年岁月"));
		bookShelf.appendBook(new Book("C++网络编程"));
		bookShelf.appendBook(new Book("J2EE网络编程精解"));
		bookShelf.appendBook(new Book("Java编程思想"));
		
		//获得书架迭代器
		Iterator it = bookShelf.iterator();
		while(it.hasNext()) {
			Book book = (Book)it.next();
			System.out.println(book.getName());
		}
	}
}




输出结果:

周恩来的晚年岁月
C++网络编程
J2EE网络编程精解
Java编程思想


迭代器设计恩想:
      迭代器可以顺序访问一个聚集中的元素而不必显露聚集的内部对象。多个对象聚在一起形成的总体称为聚集,聚集对象是能够包容一组对象的容器对象。迭代器模式将迭代逻辑封装到一个独立的对象中,从而与聚集本身隔开。迭代算法独立于聚集对象,修改迭代算法不会对聚集对象产生任何影响,实现程序的松耦合。

 

4
0
分享到:
评论
4 楼 forgettoo 2012-05-08  
[color=darkred][/color]
dfad
3 楼 forgettoo 2012-05-08  
adapter design pattern
2 楼 wuhua 2008-07-20  
引用
适配器模式是啥来着?

主要的用途应该是连接你的程序与其他程序(包括,操作系统,应用软件)之间的桥梁吧。
1 楼 laiseeme 2008-07-18  
适配器模式是啥来着?

相关推荐

    【Java设计模式】(1)迭代器模式Iterator

    【Java设计模式】(1)迭代器模式Iterator(代码)

    Java设计模式之Iterator模式

    参考:马士兵 Java设计模式 Iterator 1.首先定义一个容器Collection接口. 2.定义一个Iterator迭代器的接口 3.定义一个ArrayList,实现Collection接口,并写一个实现了Iterator接口的内部类。 4.编写测试程序TestMain...

    迭代器模式(Iterator Pattern)原理图

    迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又...

    java迭代器模式.rar

    迭代这个名词对于熟悉Java的人来说绝对不陌生。我们常常使用JDK提供的迭代接口进行java collection的遍历: Iterator it = list.iterator(); while(it.hasNext()){ ...而这就是关于迭代器模式应用很好的例子。

    java设计模式--迭代器设计模式.docx

    迭代器模式(Iterator Pattern)是一种非常常用的设计模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 介绍 意图: 提供一种方法顺序访问一个聚合对象中各个...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    《java设计模式(第2版)》通过一个完整的java项目对经典著作design patterns一书介绍的23种设计模式进行了深入分析与讲解,实践性强,却又不失对模式...第28章 迭代器(iterator)模式 259 第29章 访问者(visitor)模式 278

    33种JAVA设计模式DEMO

    迭代器模式(Iterator Pattern) 中介者模式(Mediator Pattern) 备忘录模式(Memento Pattern) 观察者模式(Observer Pattern) 状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式...

    设计模式_迭代器模式.zip

    迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 迭代器模式 java demo

    PHP设计模式之迭代器(Iterator)模式入门与应用详解

    迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设计人员无需关心容器物件的内容,现在呢,各种语言实作Iterator的方式皆不尽同,有些面向对象...

    java迭代器

    文章目录java迭代器Iterator 迭代器接口迭代器的方法:next():返回迭代中的下一个元素。hasNext():如果迭代具有更多元素,则返回true。remove():从基础集合中移除迭代器返回的最后一个元素。使用foreach 循环遍历...

    java设计模式教程+源代码

    Iterator ( 迭代器模式 ) Mediator ( 中介者模式 ) Memento ( 备忘录模式 ) Observer ( 观察者模式 ) State ( 状态模式 ) Strategy ( 策略模式 ) TemplateMethod ( 模板方法 ) Visitor ( 访问者模式 )

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    设计模式(十七)——迭代器模式(Iterator Pattern)

    如果我们的集合元素是用不同的方式实现的,有数组,还有 java 的集合类,或者还有其他方式,当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而且还会暴露元素的内部结构,可以考虑使用迭代器模式解决。...

    Android编程设计模式之迭代器模式详解

    迭代器模式算是一个比较古老的设计模式,其源于对容器的访问,比如Java中的List、Map、数组等,我们知道对容器对象的访问必然会涉及遍历算法,我们可以将遍历的方法封装在容器中,或者不提供遍历方法。如果我们将...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    14、迭代器模式ITERATOR PATTERN 15、组合模式COMPOSITE PATTERN 16、观察者模式OBSERVER PATTERN 17、责任链模式 18、访问者模式VISITOR PATTERN 19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、...

    Java设计模式,并加上个人理解

    1. 设计模式 1.1 含义 1.2 作用 1.3 设计原则 ...14. 迭代器模式 (Iterator Pattern) 15. 享元模式 (Flyweight Pattern) 16. 桥接模式 (Bridge Pattern) 17. 观察者模式 (Observer Pattern)

    23种java版设计模式源码案例.zip

    23种java版设计模式源码案例.zip 0.目录 创建型模式(creational) 简单工厂(simplefactory) 动态工厂(dynamic) 抽象工厂(abstract) 单例模式(singleton) 建造者模式(builder) 原型模式(prototype) 结构型模式...

    javascript设计模式之迭代器模式

    迭代器模式分为内部迭代器和外部迭代器,内部迭代器就是在函数内部定义好迭代的规则,它完全接手整个迭代的过程,外部只需一次初始调用。 内部迭代器 以下自行实现的类似jquery中$.each()的each()函数就是内部迭代...

    JAVA设计模式.rar

    策略模式【STRATEGY PATTERN】 代理模式【PROXY PATTERN】 单例模式【SINGLETON PATTERN】  多例模式【MULTITION PATTERN】  ...迭代器模式【ITERATOR PATTERN】  组合模式【COMPOSITE PATTERN】 ......

    23种java设计模式

    3、行为模式:Iterator(迭代模式)、Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、 Mediator(中介模式)、Interpreter(解释器模式)、Strategy(策略模式)、State 、Observer...

Global site tag (gtag.js) - Google Analytics