`
shuofenglxy
  • 浏览: 194477 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

菜鸟硕枫设计模式系列之17 迭代器模式

阅读更多
迭代器模式是一种行为模式。提供了一种顺序访问聚集中每个元素的办法(有可能元素之前不同类型)。迭代器在java中应用很广泛。迭代器最大的特点是提供了存储对象的聚集,另外也提供了遍历访问对象的方式。

迭代器模式类图:

                                                       


具体代码示例:

package iteratorPattern;

public class Dog {

	void dosomething() {
		System.out.println(this.getClass()+" working");
	}
}


package iteratorPattern;

public class Child {
	void dosomething() {
		System.out.println(this.getClass()+"working");
	}
}


package iteratorPattern;

public class Man {
	void dosomething() {
		System.out.println(this.getClass()+" working");
	}

}


package iteratorPattern;

public class Woman{
	void dosomething() {
		System.out.println(this.getClass()+"working");
	}
}


对象存储集合  需要实现Iterator接口 并且有添加元素和删除元素以及遍历元素的方法
package iteratorPattern;

import java.util.ArrayList;
import java.util.Iterator;

public class AnimalList implements Iterator{

	private ArrayList<Object> animalList= new ArrayList<Object>();
	Iterator itr = animalList.iterator();
	
	public boolean hasNext() {
		return itr.hasNext();
	}

	public Object next() {
		return (Object)itr.next();
	}

	public void add(Object o){
		animalList.add(o);
	}
	public void remove() {
		itr.remove();
	}

	public void notifyThey(){
		for(Object o : animalList){
			if(o instanceof Man){
				((Man) o).dosomething();
			}
			else if(o instanceof Woman){
				((Woman) o).dosomething();
			}else if (o instanceof Child){
				((Child) o).dosomething();
			}else{
				((Dog) o).dosomething();
			}
				
		}
	}
	public ArrayList<Object> getAnimalList() {
		return animalList;
	}

	public void setAnimalList(ArrayList<Object> animalList) {
		this.animalList = animalList;
	}

}


测试类:
package iteratorPattern;

public class IteratorTest {

	public static void main(String[] args){
		Dog dog = new Dog();
		Man man = new Man();
		Woman woman = new Woman();
		Child child = new Child();
		
		AnimalList animal = new AnimalList();
		animal.add(child);
		animal.add(man);
		animal.add(woman);
		animal.add(dog);
		
		animal.notifyThey();
		
	}
}


说明: 在本例中,所有的不同类都是Object的子类,所以可以放到 animal中去,animal调用notifyThey方法遍历通知每一个存在于animal中的对象,似乎有了点订阅发布(观察者模式)中发布的影子。
  • 大小: 15.4 KB
分享到:
评论

相关推荐

    Java设计模式菜鸟系列教程

    Java设计模式菜鸟系列教程 本教程对Java 23种设计模式进行了总结,涵盖了策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式、单例模式、命令模式、适配器模式、外观模式、模板方法模式、迭代器模式、...

    设计模式学习经典篇之菜鸟篇

    本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...

    23种设计模式知识要点.pdf_设计模式_

    设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更加灵活、可维护和可扩展...

    深入浅出设计模式(.PDF)

    行为型设计模式如观察者模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、状态模式、策略模式、模板方法模式和访问者模式,这些模式关注的是对象之间的交互和行为。 设计模式的核心价值在于它们是...

    C#23种设计模式【完整】(亲测可用)

    20. 迭代器模式(Iterator Pattern):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 21. 中介者模式(Mediator Pattern):定义一个中介对象来简化原本复杂的对象交互。 22. 组合实体模式...

    NET 设计模式

    11、迭代器模式 12、单例模式 13、桥接模式 14、命令模式 15、职责链模式 16、中介者模式 17、享元模式 18、解释器模式 19、访问者模式 20、策略模式 21、装饰模式 22、代理模式 23、工厂方法模式 24、原型模式

    23种软件设计模式简述

    20. **迭代器模式**:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 21. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构...

    Java之美[从菜鸟到高手演变]之设计模式

    总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式...

    设计模式整理

    - 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 - 中介者模式(Mediator):用一个中介对象封装一系列的对象的交互,使得这些对象不需要显示地相互引用,...

    菜鸟虚怀项目Java笔试题

    【描述】:“菜鸟虚怀项目Java笔试题”可能涵盖了从简单的语法问题到复杂的设计模式应用,全面地评估应聘者对于Java的理解程度和实际编程能力。这类笔试题通常包括选择题、填空题、简答题和编程题等形式,以全面覆盖...

    java常用数据结构及算法集锦

    迭代器模式 状态模式 责任链模式 访问者模式 结构与算法 基础概念 稀疏数组与二维数组 队列和栈结构 单向链表和双向链表 排序与查找算法 二叉树与多叉树 应用场景 RSA算法签名验签流程 树结构业务应用

    [网盘]java程序员由菜鸟到笨鸟.pdf.2018_03_17

    - 迭代器(Iterator)与增强for循环遍历集合。 7. **枚举与注解**: - 枚举类型的定义与应用场景。 - 注解的使用及其元注解的理解。 8. **输入输出流**: - 字节流与字符流的基本概念。 - 文件操作与网络通信...

    资料库,关于面向对象以及4大特性,8大原则,24设计模式

    3. 行为型模式:策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、命令(Command)、责任链(Chain of Responsibility)、备忘录(Memento)、状态(State)、访问者...

    .Net petshop 4.0+文档

    这个项目对于初学者,尤其是那些在IT行业中刚刚起步的“菜鸟”来说,是一个极好的学习资源,它展示了最佳实践和设计模式,帮助开发者理解和掌握.NET平台上的软件开发。 一、项目结构 .Net PetShop 4.0 采用了典型的...

    小菜鸟学VC++,常用类的详解文档,数据库从易到难

    在“各种类的详解”部分,除了MFC的常用类,还可以深入研究STL容器类的使用,如向量、链表、映射等,以及迭代器的使用和算法的应用。此外,还可以探讨异常处理、多线程编程、文件I/O等方面的知识,这些都是VC++...

    C++整合版 菜鸟到高手(包含源码-视频-笔记).docx

    - 分析实际项目中的代码结构与设计模式。 - 学习如何解决常见的编程问题。 - 掌握软件开发流程与团队协作技巧。 2. **源码解析**: - 分析开源项目的源码,理解其实现原理。 - 学习优秀的编程实践和技术方案。...

    基于servlet+jsp+mysql+MVC模式的学生选课管理系统.zip

    4. **MVC模式**: MVC模式是一种软件设计模式,将应用分为模型(Model)、视图(View)和控制器(Controller)三个部分。在本项目中: - **模型**:处理业务逻辑和数据,如`CourseModel`类负责管理课程信息。 - **...

    jstl教程(新手必备)

    3. **分离关注点**:通过使用JSTL,开发者可以将业务逻辑和视图逻辑更好地分离,符合MVC(模型-视图-控制器)设计模式,有利于团队协作和代码复用。 4. **简化表达式语言**:JSTL有自己的表达式语言,允许在不使用...

Global site tag (gtag.js) - Google Analytics