迭代器模式是一种行为模式。提供了一种顺序访问聚集中每个元素的办法(有可能元素之前不同类型)。迭代器在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 23种设计模式进行了总结,涵盖了策略模式、观察者模式、装饰者模式、工厂方法模式、抽象工厂模式、单例模式、命令模式、适配器模式、外观模式、模板方法模式、迭代器模式、...
本资源“设计模式学习经典篇之菜鸟篇”旨在为初学者提供一个全面而通俗易懂的设计模式学习路径。 设计模式的核心在于重用已验证的解决方案,以提高代码的可读性、可维护性和可扩展性。根据GOF(Gamma, Helm, ...
设计模式是软件工程中的一种最佳实践,用于解决在软件开发过程中常见的问题,提供了一套可重用的解决方案。这些模式都是经验丰富的软件开发者在长期实践中总结出来的,它们可以帮助我们写出更加灵活、可维护和可扩展...
行为型设计模式如观察者模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、状态模式、策略模式、模板方法模式和访问者模式,这些模式关注的是对象之间的交互和行为。 设计模式的核心价值在于它们是...
20. 迭代器模式(Iterator Pattern):提供一种方法顺序访问聚合对象的元素,而又不暴露其底层表示。 21. 中介者模式(Mediator Pattern):定义一个中介对象来简化原本复杂的对象交互。 22. 组合实体模式...
11、迭代器模式 12、单例模式 13、桥接模式 14、命令模式 15、职责链模式 16、中介者模式 17、享元模式 18、解释器模式 19、访问者模式 20、策略模式 21、装饰模式 22、代理模式 23、工厂方法模式 24、原型模式
20. **迭代器模式**:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 21. **模板方法模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构...
总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式...
- 迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 - 中介者模式(Mediator):用一个中介对象封装一系列的对象的交互,使得这些对象不需要显示地相互引用,...
【描述】:“菜鸟虚怀项目Java笔试题”可能涵盖了从简单的语法问题到复杂的设计模式应用,全面地评估应聘者对于Java的理解程度和实际编程能力。这类笔试题通常包括选择题、填空题、简答题和编程题等形式,以全面覆盖...
迭代器模式 状态模式 责任链模式 访问者模式 结构与算法 基础概念 稀疏数组与二维数组 队列和栈结构 单向链表和双向链表 排序与查找算法 二叉树与多叉树 应用场景 RSA算法签名验签流程 树结构业务应用
- 迭代器(Iterator)与增强for循环遍历集合。 7. **枚举与注解**: - 枚举类型的定义与应用场景。 - 注解的使用及其元注解的理解。 8. **输入输出流**: - 字节流与字符流的基本概念。 - 文件操作与网络通信...
3. 行为型模式:策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、命令(Command)、责任链(Chain of Responsibility)、备忘录(Memento)、状态(State)、访问者...
这个项目对于初学者,尤其是那些在IT行业中刚刚起步的“菜鸟”来说,是一个极好的学习资源,它展示了最佳实践和设计模式,帮助开发者理解和掌握.NET平台上的软件开发。 一、项目结构 .Net PetShop 4.0 采用了典型的...
在“各种类的详解”部分,除了MFC的常用类,还可以深入研究STL容器类的使用,如向量、链表、映射等,以及迭代器的使用和算法的应用。此外,还可以探讨异常处理、多线程编程、文件I/O等方面的知识,这些都是VC++...
- 分析实际项目中的代码结构与设计模式。 - 学习如何解决常见的编程问题。 - 掌握软件开发流程与团队协作技巧。 2. **源码解析**: - 分析开源项目的源码,理解其实现原理。 - 学习优秀的编程实践和技术方案。...
4. **MVC模式**: MVC模式是一种软件设计模式,将应用分为模型(Model)、视图(View)和控制器(Controller)三个部分。在本项目中: - **模型**:处理业务逻辑和数据,如`CourseModel`类负责管理课程信息。 - **...
3. **分离关注点**:通过使用JSTL,开发者可以将业务逻辑和视图逻辑更好地分离,符合MVC(模型-视图-控制器)设计模式,有利于团队协作和代码复用。 4. **简化表达式语言**:JSTL有自己的表达式语言,允许在不使用...