一、定义
提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
参考Java中for循环。
二、UML类图
三、实现
- 聚焦抽象类
package com.jthao.design.des.iterator;
public interface Container {
public Iterator getIterator();
}
- 迭代抽象类
package com.jthao.design.des.iterator;
public interface Iterator {
public boolean hasNext();
public Object next();
}
- 具体聚焦类
package com.jthao.design.des.iterator;
public class NameRepository implements Container {
public String[] names = { "name1", "name2", "name3" };
@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;
}
}
}
- 测试类
package com.jthao.design.des.iterator;
public class Test {
public static void main(String[] args) {
NameRepository nameRepository = new NameRepository();
for(Iterator iterator = nameRepository.getIterator();iterator.hasNext();) {
String name = (String) iterator.next();
System.out.println("name:"+name);
}
}
}