迭代器模式(Iterator Pattern)用于顺序访问集合对象的元素,不需要知道集合对象的底层表示
迭代器模式是 Java 和 .Net 编程环境中非常常用的设计模式
迭代器模式属于行为型模式
1. 意图
2. 主要解决
3. 何时使用
4. 如何解决
5. 关键代码
6. 应用实例
7. 优点
8. 缺点
9. 使用场景
10. 注意事项
1. 创建接口
Iterator.java
package com.demo.gof;
public interface Iterator {
public boolean hasNext();
public Object next();
}
Container.java
package com.demo.gof;
public interface Container {
public Iterator getIterator();
}
2. 创建实现了 Container 接口的实体类
该类有实现了 Iterator 接口的内部类 NameIterator
NameRepository.java
package com.demo.gof;
public class NameRepository implements Container {
public String names[] = {"Robert" , "John" ,"Julie" , "Lora"};
@Override
public Iterator getIterator() {
return new NameIterator();
}
private class NameIterator implements Iterator {
int index;
@Override
public boolean hasNext() {
if(index < names.length){
return true;
}
return false;
}
@Override
public Object next() {
if(this.hasNext()){
return names[index++];
}
return null;
}
}
}
3. 使用 NameRepository 来获取迭代器,并打印名字
IteratorPatternDemo.java
package com.demo.gof;
public class IteratorPatternDemo {
public static void main(String[] args) {
NameRepository namesRepository = new NameRepository();
for(Iterator iter = namesRepository.getIterator(); iter.hasNext();){
String name = (String)iter.next();
System.out.println("Name : " + name);
}
}
}
编译运行以上 Java 范例,输出结果如下
$ javac -d . src/main/com.demo/gof/IteratorPatternDemo.java
$ java com.demo.gof.IteratorPatternDemo
Name : Robert
Name : John
Name : Julie
Name : Lora