目录
1.简介
迭代器模式已经是一种没落的模式了,基本不会单独写一个迭代器。但其应用相当广泛,俨然已成为一种基础工具,如Java提供的Iterator。它对外提供一种方法用于访问一个容器对象中的每个元素,同时不会暴露该对象内部的细节信息。主要是为了解决遍历这些容器中的元素。主要包括抽象迭代器,具体迭代器,抽象容器和具体容器。迭代器部分主要负责实现访问和遍历元素。而容器部分主要是创建容纳迭代器的对象。
2.形式
抽象迭代器
public interface IIterator {
public Object next();
public boolean hasNext();
public boolean remove();
}
具体迭代器
public class Iterator implements IIterator {
private Vector vector = new Vector();
public int cursor = 0;
public Iterator(Vector _vector) {
this.vector = _vector;
}
public boolean hasNext() {
if(this.cursor == this.vector.size()) {
return false;
}else {
return true;
}
}
public Object next() {
Object result = null;
if(this.hasNext()) {
result = this.vector.get(this.cursor++);
}else {
result = null;
}
return result;
}
public boolean remove() {
this.vector.remove(this.cursor);
return true;
}
}
抽象容器
public interface IContainer {
public void add(Object object);
public void remove(Object object);
public IIterator IIterator();
}
具体容器
public class Container implements IContainer {
private Vector vector = new Vector();
public void add(Object object) {
this.vector.add(object);
}
public IIterator iterator() {
return new Iterator(this.vector);
}
public void remove(Object object) {
this.remove(object);
}
}
测试
public class Test {
public static void main(String[] args) {
IContainer container = new Container();
container.add("黄药师");
container.add("欧阳锋");
container.add("段智兴");
container.add("洪七公");
container.add("王重阳");
IIterator iterator = container.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
}
}