Design Pattern:
This pattern is used to get a way to access the elements of a collection object in sequential manner without any need to know its underlying representation 模式:迭代器模式是用来遍历集合中每个元素的 并且不用知道他底层的结构,反正他自带迭代器
故事场景:我想知道勇士队球员都有谁,我不用知道他的球员组成什么的,反正有球员名单
首先定义一个容器接口
public interface Container {
public Iterator getIterator();
}
然后还有一个迭代器
public interface Iterator {
public boolean hasNext();
public Object next();
}
现在要定义一个类(勇士队),有一个迭代器(球员列表)
public class Warriors implements Container {
private List<String> names = Arrays.asList("凯文·杜兰特","克莱·汤普森","德雷蒙德·格林","斯蒂芬·库里","安德烈·伊格达拉","肖恩·利文斯顿");
@Override
public Iterator getIterator() {
return new PeopleIterator();
}
private class PeopleIterator implements Iterator{
int index;
@Override
public boolean hasNext() {
return index < names.size();
}
@Override
public Object next() {
if (hasNext()){
return names.get(index++);
}
return names.get(index);
}
}
}
实验的开始
public class IteratorPatternDemo {
public static void main(String[] args) {
System.out.println("↓↓↓↓勇士队球员↓↓↓↓");
Warriors family = new Warriors();
for (Iterator iterator = family.getIterator();iterator.hasNext();){
String name = iterator.next().toString();
System.out.println(" "+name);
}
}
}