`
samsongbest
  • 浏览: 170250 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

15 行为模式 - 迭代子(Iterator)模式

 
阅读更多

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

  • 大小: 83 KB
  • 大小: 40.1 KB
  • 大小: 10.8 KB
分享到:
评论

相关推荐

    设计模式--迭代器模式java例子

    迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如ArrayList、LinkedList等。本示例将深入探讨如何在Java中实现和使用迭代器...

    (行为型模式) Iterator 迭代器模式

    ### (行为型模式) Iterator 迭代器模式 #### 概述 在软件工程领域,设计模式被广泛应用于解决常见的编程问题。其中,“迭代器模式”作为一种行为型设计模式,在处理集合类对象时发挥着重要作用。本文将详细介绍...

    设计模式-迭代器模式(讲解及其实现代码)

    迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。这种模式允许我们遍历集合中的每个元素,同时保持集合本身抽象,不需了解其内部结构。 在Java、C#等面向对象语言...

    java常用设计模式-迭代器模式

    Java 迭代器模式是一种行为设计模式,它提供了一种访问集合对象元素的方法,而不需要暴露该对象的内部表示。该模式适用于需要遍历集合对象的场景,例如数组、列表、树等。 迭代器模式的主要优点是: 1. 避免了集合...

    java-util-iterator.pdf java-util-iterator.pdf

    ### 三、Iterator模式的优势 使用`Iterator`模式遍历集合具有以下优势: 1. **解耦访问逻辑**:客户端代码无需了解集合的具体实现,这使得修改集合实现时不会影响到客户端代码。 2. **简化客户端代码**:通过`...

    Android设计模式之--迭代器模式

    迭代器模式是软件设计模式中的一种行为模式,它在Android开发中被广泛应用,尤其是在处理集合对象的遍历操作时。这种模式提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java或Android编程中,...

    设计模式-迭代器模式

    1. **分离遍历行为**:迭代器模式将遍历操作与聚合对象的定义分离,使得两者可以独立变化。 2. **支持多种遍历方式**:可以为同一聚合对象提供不同类型的迭代器,实现不同的遍历顺序。 3. **增强了对聚合类的透明性*...

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

    迭代器模式是软件设计模式中的一种行为模式,其主要目的是为了在不暴露聚合对象内部结构的情况下,提供一种顺序访问聚合对象中各个元素的方式。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等...

    设计模式之迭代器模式(Iterator)

    迭代器模式是软件设计模式中的一种行为模式,它在编程中扮演着重要的角色,尤其是在处理集合数据时。迭代器模式的核心思想是提供一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。这种模式使得用户可以在不...

    设计模式(C#)之迭代器模式(Iterator Pattern)

    迭代器模式是软件设计模式中的一种行为模式,它在C#等面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户遍历一个聚合对象(如数组、集合或列表)的所有元素,而无需了解底层的实现细节。下面将详细...

    IteratorPattern 迭代设计模式

    迭代器模式(IteratorPattern)是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象元素的方法,同时又不暴露其底层表示。这种模式允许我们遍历集合对象的元素,而无需暴露其内部结构。在Java、C#等面向对象...

    iterator-demo 迭代器设计模式demo

    迭代器设计模式是一种常用的行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。这个“iterator-demo”应该是一个示例项目,用于演示如何在实际编程中应用迭代器模式。下面我们将深入...

    java基础 集合-22-迭代器设计模式

    迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而不暴露其底层表示。在Java中,迭代器模式广泛用于遍历集合类,如ArrayList、LinkedList、HashSet和HashMap等。通过迭代器,我们可以...

    Iterator Pattern(迭代模式)

    迭代模式是一种行为设计模式,它允许我们通过统一的接口遍历集合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛使用,尤其是在集合类库中,如ArrayList、LinkedList等。下面我们...

    09-迭代器模式.pdf

    迭代器模式(Iterator Pattern),也被称作游标(Cursor)模式,是软件工程设计模式中的一种行为型模式。该模式的主要目的是提供一种方法来访问一个容器(container)对象中的各个元素,而无需暴露容器的内部结构或...

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

    迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...

    设计模式专题之(二十三)迭代器模式---设计模式迭代器模式示例代码(python--c++)

    迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在本文中,我们将深入探讨迭代器模式的概念,并通过Python和C++两种编程语言展示其实现。 首先,理解迭代器模式...

    C#面向对象设计模式纵横谈\18 行为型模式Iterator迭代器模式.zip

    在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不... 这是第18节:行为型模式Iterator迭代器模式

    23钟设计模式之迭代器模式模式

    迭代器模式是23种设计模式之一,属于行为型模式。它提供了一种访问聚合对象元素的方式,而不需要暴露该对象的内部实现。迭代器模式的主要目的是让开发者能够轻松地遍历聚合对象中的元素,而不需要关心对象的内部实现...

Global site tag (gtag.js) - Google Analytics