/*
* 迭代器模式(Iterator)
*
* 类似于集合中的Iterator,使用迭代器来统一不同集合对象的遍历方式,
* 隐藏内部细节,用一个抽象迭代器,每个具体的集合类来实现特有的迭代器。
*/
package model;
public class TestIterator {
public static void main(String[] args) {
Stack s = new Stack();
s.push("Liucy");
s.push("Huxz");
s.push("George");
LinkedList l = new LinkedList();
l.addFirst("Liucy");
l.addFirst("Huxz");
l.addFirst("George");
print(l.iterator());
}
public static void print(Itr it) {
while (it.hasNext()) {
System.out.println(it.next());
}
}
}
interface Itr {
boolean hasNext();
Object next();
}
class Stack {
Object[] os = new Object[10];
int index = 0;
private void expand() {
Object[] os2 = new Object[os.length * 2];
System.arraycopy(os, 0, os2, 0, os.length);
os = os2;
}
public void push(Object o) {
if (index == os.length)
expand();
os[index] = o;
index++;
}
public Object pop() {
index--;
Object o = os[index];
os[index] = null;
return o;
}
private class StackItr implements Itr {
int cursor = 0;
public boolean hasNext() {
return cursor < index;
}
public Object next() {
return os[cursor++];
}
}
public Itr iterator() {
return new StackItr();
}
}
class LinkedList {
private class Node {
Object o;
Node next;
public Node(Object o) {
this.o = o;
}
public void setNext(Node next) {
this.next = next;
}
public Node getNext() {
return this.next;
}
}
Node head;
public void addFirst(Object o) {
Node n = new Node(o);
n.setNext(head);
head = n;
}
public Object removeFirst() {
Node n = head;
head = head.getNext();
return n.o;
}
class LinkedListItr implements Itr {
Node currentNode = head;
public boolean hasNext() {
return this.currentNode != null;
}
public Object next() {
Node n = currentNode;
currentNode = currentNode.getNext();
return n.o;
}
}
public Itr iterator() {
return new LinkedListItr();
}
}
分享到:
相关推荐
C#面向对象设计模式 (行为型模式) Iterator 迭代器模式 视频讲座下载
设计模式C++学习之迭代器模式(Iterator)
【Java设计模式】(1)迭代器模式Iterator(代码)
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
迭代器(Iterator) 用意:可以顺序地访问一个集合中的元素而不必暴露集合中的内部表象。
Head First 设计模式 (九) 迭代器与组合模式(Iterator & Composite pattern) C++实现
博文“设计模式之--迭代器模式”附属源码,以供参考。
迭代器模式(Iterator Pattern)是设计模式中的一种行为模式,它允许顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式提供了一种方法,可以顺序地访问一个聚合对象中的各个元素,而又...
C#面向对象设计模式纵横谈(18):(行为型模式) Iterator 迭代器模式 (Level 300)
在这里与各位分享本人从网络上下载的C#面向对象设计模式纵横谈系列视频,共有25节,除了第一节需要各位贡献一点资源分以作为对本人上传资源的回馈,后面的其他资源均不... 这是第18节:行为型模式Iterator迭代器模式
2.定义一个Iterator迭代器的接口 3.定义一个ArrayList,实现Collection接口,并写一个实现了Iterator接口的内部类。 4.编写测试程序TestMain 从以上可以看出,设计模式到处用到面向对象中的多态。接口调用子类中的...
iterator-demo 迭代器设计模式demo
C++设计模式课件21_Iterator_迭代器.pdf
迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 迭代器模式属于行为型模式。 迭代器模式 java demo
c++设计模式-行为型模式-迭代器模式;qt工程;c++简单源码;迭代器(Iterator)模式的定义:提供一个对象来顺序访问聚合对象中的一系列数据,而不暴露聚合对象的内部表示。
迭代器模式(Iterator Pattern)是一种非常常用的设计模式,这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。 介绍 意图: 提供一种方法顺序访问一个聚合对象中各个...
主要为大家详细介绍了C++设计模式之迭代器模式Iterator,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 那么一般在什么时候才会用迭代器模式呢?当你需要访问一个聚集对象,而且不管这些对象是什么都需要遍历的时候...
23种Python设计模式示例...Interpreter解释器模式,Iterator迭代器模式,Mediator中介者模式、Singleton光身汉模式,Observer观察者模式等,一共23种,这里不一一列举了,每一种模式代码,都包括了中文注解,利于学习。