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)来实现对树的遍历,包括前序、中序和后序遍历。这些是设计模式中的经典应用,对于理解和掌握...
这份文档以例子的形式讲诉了设计模式之迭代器与组合模式,希望可以帮助学习的人!
迭代器模式(Iterator Pattern)和组合模式(Composite Pattern)是设计模式中的两种重要结构型模式,它们在软件设计中有着广泛的应用。这两种模式都属于GoF(Gang of Four)设计模式,旨在解决特定的问题,提升代码...
在实际应用中,迭代器模式常用于各种容器(如数组、链表、树等)的遍历,以及模板方法模式、策略模式等设计模式的组合。例如,在Java的`Collections`类中,有许多方法(如`sort()`、`shuffle()`)都依赖于迭代器来...
以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...
《HeadFirst JAVA设计模式》中利用迭代器迭代组合模式存在错误,课本中实现代码对于大于两层的树状测试数据存在错误(即Menu里有Menu),这里给出原错误测试代码(compositeIter包)和错误解决代码(solveIter包)。
### Java 23种设计模式之...- **组合迭代器**:可以组合多个迭代器,用于遍历由多个聚合对象组成的复合结构。 通过上述内容,我们可以看到迭代器模式不仅解决了访问聚合对象的问题,还提高了代码的可读性和可维护性。
而与Composite(组合)模式的联系在于迭代器通常用于递归地遍历组合结构。 迭代器模式在Java中有着广泛的应用。Java内置了对迭代器模式的支持,其中java.util.Enumeration和java.util.Iterator接口就是迭代器接口。...
- 组合模式与其他设计模式(如装饰器模式、代理模式等)的区别和结合使用。 在使用组合模式时,我们需要注意: - 避免在客户端代码中直接依赖于具体类,而是依赖于组件接口,以保持代码的灵活性和可扩展性。 - 为了...
在这个话题中,我们将深入探讨如何利用组合模式(Composite Pattern)和迭代模式(Iterator Pattern)来构建和遍历树结构。 **组合模式**是面向对象设计模式的一种,它允许我们处理部分和整体的关系。在树形结构中...
在给定的标题和描述中,提到了三种特定的设计模式:组合模式、公司管理系统以及迭代器模式。让我们深入探讨这三种模式以及它们在Java编程中的应用。 1. **组合模式**: 组合模式是一种结构型设计模式,它允许我们...
组合模式是一种设计模式,属于结构型模式,它允许我们以统一的方式处理单个对象和对象的集合。在组合模式中,我们创建具有类似接口的对象树,这样用户就可以一致地处理单个对象和对象集合,而无需关心它们的具体类型...
35.设计模式之迭代器模式 36.设计模式之中介者模式 37.设计模式之享元模式 38.设计模式之职责链模式 39.设计模式之适配器模式 40.设计模式之组合模式 41.设计模式之模板方法 42.设计模式之原型模式 43.设计模式之...
在实际应用中,组合模式通常与迭代器模式一起使用,允许客户端遍历整个树形结构。通过定义一个统一的迭代接口,客户端可以遍历所有的组件,无论它们是叶子节点还是组合节点。 标签中提到的“源码”和“工具”可能指...
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 观察者模式 状态模式 导入模式 迭代器模式 命令模式 职责链模式 进来者模式 ...
9. **组合模式**:允许你将对象组合成树形结构来表现“整体/部分”层次结构。 10. **享元模式**:在不影响功能的前提下,减少对象的数量,以达到提高系统性能的目的。 二、迭代及其在软件开发中的应用 迭代是软件...
组合模式( Composite ) 享元模式( Flyweight ) 行为型模式包含了: 策略模式( Strategy ) 模板方法模式( Template Method ) 观察者模式( Observer ) 迭代子模式( Iterator ) 责任链模式( Chain of ...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
【Java设计模式】《设计模式之禅》中的23种设计模式.zip ...14. 迭代器模式 15. 组合模式 16. 观察者模式 17. 门面模式 18. 备忘录模式 19. 访问者模式 20. 状态模式 21. 解释器模式 22. 享元模式 23. 桥梁模式