`

组合模式之组合迭代器

阅读更多


import java.util.*;
  
public class CompositeIterator implements Iterator<MenuComponent> {
	Stack<Iterator<MenuComponent>> stack = new Stack<Iterator<MenuComponent>>();
   
	public CompositeIterator(Iterator<MenuComponent> iterator) {
		stack.push(iterator);
	}
   
	public MenuComponent next() {
		if (hasNext()) {
			Iterator<MenuComponent> iterator = stack.peek();
			MenuComponent component = iterator.next();
			stack.push(component.createIterator());
			return component;
		} else {
			return null;
		}
	}
  
	public boolean hasNext() {
		if (stack.empty()) {
			return false;
		} else {
			Iterator<MenuComponent> iterator = stack.peek();
			if (!iterator.hasNext()) {
				stack.pop();
				return hasNext();
			} else {
				return true;
			}
		}
	}
}


客户可以通过调用hasNext()和next()来驱动遍历。
代码维护组合递归结构的位置。 这也就是为什么当我们在组合层次结构中
上上下下时,
使用堆栈来维护我们的位置。
分享到:
评论

相关推荐

    组合模式二叉树,前序、中序、后续,迭代器模式访问遍历

    在这个主题中,我们主要探讨了如何利用组合模式(Composite Pattern)构建二叉树,并通过迭代器模式(Iterator Pattern)来实现对树的遍历,包括前序、中序和后序遍历。这些是设计模式中的经典应用,对于理解和掌握...

    设计模式之迭代器与组合模式

    这份文档以例子的形式讲诉了设计模式之迭代器与组合模式,希望可以帮助学习的人!

    Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现

    迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)是设计模式中的两种重要结构型模式,它们在软件设计中有着广泛的应用。这两种模式都属于GoF(Gang of Four)设计模式,旨在解决特定的问题,提升代码...

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

    在实际应用中,迭代器模式常用于各种容器(如数组、链表、树等)的遍历,以及模板方法模式、策略模式等设计模式的组合。例如,在Java的`Collections`类中,有许多方法(如`sort()`、`shuffle()`)都依赖于迭代器来...

    JAVA 设计模式 工厂模式 代理模式 迭代模式 责任链模式 源码

    以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...

    HeadFirst 组合模式+迭代器错误原因以及解决代码

    《HeadFirst JAVA设计模式》中利用迭代器迭代组合模式存在错误,课本中实现代码对于大于两层的树状测试数据存在错误(即Menu里有Menu),这里给出原错误测试代码(compositeIter包)和错误解决代码(solveIter包)。

    Java 23种设计模式20迭代器模式.pdf

    ### Java 23种设计模式之...- **组合迭代器**:可以组合多个迭代器,用于遍历由多个聚合对象组成的复合结构。 通过上述内容,我们可以看到迭代器模式不仅解决了访问聚合对象的问题,还提高了代码的可读性和可维护性。

    2 迭代器模式-MOOC课程内容.pdf

    而与Composite(组合)模式的联系在于迭代器通常用于递归地遍历组合结构。 迭代器模式在Java中有着广泛的应用。Java内置了对迭代器模式的支持,其中java.util.Enumeration和java.util.Iterator接口就是迭代器接口。...

    组合模式-------树形模式

    - 组合模式与其他设计模式(如装饰器模式、代理模式等)的区别和结合使用。 在使用组合模式时,我们需要注意: - 避免在客户端代码中直接依赖于具体类,而是依赖于组件接口,以保持代码的灵活性和可扩展性。 - 为了...

    树的构件与遍历---使用组合模式与迭代模式

    在这个话题中,我们将深入探讨如何利用组合模式(Composite Pattern)和迭代模式(Iterator Pattern)来构建和遍历树结构。 **组合模式**是面向对象设计模式的一种,它允许我们处理部分和整体的关系。在树形结构中...

    designPattern4:设计模式:组合模式,公司管理系统,迭代器模式(买车票)

    在给定的标题和描述中,提到了三种特定的设计模式:组合模式、公司管理系统以及迭代器模式。让我们深入探讨这三种模式以及它们在Java编程中的应用。 1. **组合模式**: 组合模式是一种结构型设计模式,它允许我们...

    组合模式的实践demo

    组合模式是一种设计模式,属于结构型模式,它允许我们以统一的方式处理单个对象和对象的集合。在组合模式中,我们创建具有类似接口的对象树,这样用户就可以一致地处理单个对象和对象集合,而无需关心它们的具体类型...

    深入理解JavaScript系列.chm

    35.设计模式之迭代器模式 36.设计模式之中介者模式 37.设计模式之享元模式 38.设计模式之职责链模式 39.设计模式之适配器模式 40.设计模式之组合模式 41.设计模式之模板方法 42.设计模式之原型模式 43.设计模式之...

    JAVA设计模式学习10——组合模式

    在实际应用中,组合模式通常与迭代器模式一起使用,允许客户端遍历整个树形结构。通过定义一个统一的迭代接口,客户端可以遍历所有的组件,无论它们是叶子节点还是组合节点。 标签中提到的“源码”和“工具”可能指...

    java 23种设计模式.zip

    设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 ...

    设计模式介绍与迭代

    9. **组合模式**:允许你将对象组合成树形结构来表现“整体/部分”层次结构。 10. **享元模式**:在不影响功能的前提下,减少对象的数量,以达到提高系统性能的目的。 二、迭代及其在软件开发中的应用 迭代是软件...

    05-容易被忽略的迭代器(1).html

    组合模式( Composite ) 享元模式( Flyweight ) 行为型模式包含了: 策略模式( Strategy ) 模板方法模式( Template Method ) 观察者模式( Observer ) 迭代子模式( Iterator ) 责任链模式( Chain of ...

    Java23种设计模式可直接运行Demo

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip ...14. 迭代器模式 15. 组合模式 16. 观察者模式 17. 门面模式 18. 备忘录模式 19. 访问者模式 20. 状态模式 21. 解释器模式 22. 享元模式 23. 桥梁模式

Global site tag (gtag.js) - Google Analytics