设计模式回顾系列文章:主要针对工作中常用常见的设计模式进行整理、总结,同时分享以供大家拍砖。
------------------------------------------------
迭代器模式(Iterator)
提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
适用于:
访问一个聚合对象的内容而无需暴露它的内部表示。
支持对聚合对象的多种遍历。
为遍历不同的聚合结构提供一个统一的接口(即支持多态迭代)。
程序实现:
节点数据结构
public class Node {
private String name;
public Node(String name){
this.name=name;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
聚合数据结构
public class NodeCollection {
private ArrayList<Node> list = new ArrayList<Node>();
private int nodeMax = 0;
public void addNode(Node n){
list.add(n);
nodeMax++;
}
public Node getNode(int i){
return list.get(i);
}
public int getMaxNum(){
return nodeMax;
}
}
迭代子抽象类:
public abstract class Iterator {
abstract public Node next();
abstract public boolean hasNext();
}
具体类,一个反向迭代器:
public class ReverseIterator extends Iterator{
private NodeCollection nodeCollection;
private int currentIndex;
public ReverseIterator(NodeCollection nc){
this.nodeCollection=nc;
this.currentIndex=nc.getMaxNum()-1;
}
@Override
public Node next() {
return(nodeCollection.getNode(currentIndex--));
}
@Override
public boolean hasNext() {
if (currentIndex == -1) return false;
return true;
}
}
客户端调用:
public static void main(String[] args) {
NodeCollection c = new NodeCollection();
c.addNode(new Node("A"));
c.addNode(new Node("B"));
c.addNode(new Node("C"));
ReverseIterator ri = new ReverseIterator(c);
while(ri.hasNext()){
Node node = ri.next();
System.out.println("node name:"+node.getName());
}
}
其实这个模式也会经常用到,例如使用Java集合框架中的Iterator接口遍历各种collection时。
分享到:
相关推荐
例如责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...
3. 行为型模式:这类模式关注对象间的交互和职责分配,包括策略(Strategy)、模板方法(Template Method)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录...
3. 行为型模式(Behavioral Patterns):涉及到对象之间的通信,例如责任链(Chain of Responsibility)、命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、...
在书中,作者们将这二十三种设计模式分成了三类,分别是创建型模式、结构型模式和行为型模式。 创建型模式包含了: 工厂方法模式( Factory Method ) 抽象工厂模式( Abstract Factory ) 单例模式( Singleton ...
迭代器模式是一种行为型设计模式,它提供了一种方法来顺序访问集合中的元素,而又不暴露集合的内部表示。在“追MM”的过程中,可以通过迭代器模式来管理不同阶段的追求行动,确保每个阶段都按计划进行。 #### 17. ...
- **行为型模式**:关注对象之间的交互以及分配职责的方式,如责任链(Chain of Responsibility)、命令(Command)、解释器(Interpreter)、迭代器(Iterator)、中介者(Mediator)、备忘录(Memento)、观察者(Observer)、...
迭代器模式是一种行为型设计模式,它允许你顺序遍历聚合对象的所有元素,而无需暴露对象的内部结构。 **比喻理解:** 假设你参加了一个大型的聚会,现场有很多MM。你想要依次和每一位MM打招呼,但是你并不清楚她们...
行为型模式则着重于对象之间的交互和职责分配,如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、责任链(Chain of Responsibility)、命令(Command)、迭代器(Iterator)、访问者(Visitor...
3. **行为型模式**:这类模式主要关注对象间的交互和责任分配,包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、访问者模式(Visitor)、责任链模式...
12. **集合框架**:学习ArrayList、LinkedList、HashSet、HashMap等集合类的使用,理解迭代器(Iterator)和泛型的概念。 13. **多线程**:理解线程的基本概念,创建和管理线程,使用synchronized关键字实现线程...
- 掌握接口如List、Set、Map,以及迭代器(Iterator)和枚举(Enumeration)的使用。 **3. 界面编程(了解)** - **AWT**:了解基本的窗口和组件,如Frame、Button、Label等。 - **事件机制**:理解事件监听和...
- **循环对象**:讲解如何利用迭代器(iterator)和生成器(generator)等特性优化循环的性能。 - **函数对象**:解释函数作为对象的概念,包括高阶函数(higher-order function)的应用。 - **错误处理**:介绍异常处理...
总体来说,本篇PHP学习笔记包含了PHP的基本语法、面向对象编程的高级特性、设计模式的实际应用以及数据的序列化与反序列化等内容,这些内容是构建PHP应用程序时不可或缺的部分。对于想要学习PHP或者加深对PHP理解的...
1. 数据结构(Collections):包括列表(List)、字典(Dictionary)、集合(Set)、元组(Tuple)、范围对象(Range)、枚举对象(Enumerate)、迭代器(Iterator)和生成器(Generator)。 2. 数据类型(Types)...
- 数据库设计中的一种概念,用于描述表、字段等结构。 46. **TableCells**: - 表格单元格。 - 表格中的最小数据单位。 47. **CaseWhenThen**: - CASE WHEN THEN。 - SQL查询中的结构,用于根据条件返回不同的...
- 讨论生成器函数如何配合迭代器协议共同使用。 3. **Modules 模块** - 探讨ES6模块系统的设计理念及其与CommonJS、AMD等模块化方案的区别。 - 分析ES6模块如何促进代码组织和重用。 4. **Classes 类** - ...