迭代器模式(Iterator Pattern)是 Java 和 .Net 編程環境中非常常用的設計模式。這種模式用於順序訪問集合對象的元素,不需要知道集合對象的底層表示。
迭代器模式屬於行爲型模式。
意圖
提供一種方法順序訪問一個聚合對象中各個元素, 而又無須暴露該對象的內部表示。
實現
實現如下
判斷一個數組是否有下一個,然後遍歷
- 創建接口
public interface Iterator{
boolean hasNext();
Object next();
}
public interface Container {
Iterator getIterator();
}
- 實現接口
public class ListContainer implements Container{
private List<Object> objects;
public ListContainer(List<Object> objects) {
this.objects = objects;
}
@Override
public Iterator getIterator() {
return new ListIterator();
}
class ListIterator implements Iterator{
int index;
@Override
public boolean hasNext() {
if (index < objects.size()){
return true;
}
return false;
}
@Override
public Object next() {
Object obj = null;
if (hasNext()){
obj = ListContainer.this.objects.get(index);
index++;
}
return obj;
}
}
}
- 使用
public void main(String... args) {
List<Object> lists = new ArrayList<>();
lists.add("A");
lists.add("V");
lists.add("S");
lists.add("F");
lists.add("G");
ListContainer container = new ListContainer(lists);
Iterator iterator = container.getIterator();
while (iterator.hasNext()){
System.out.println("name "+iterator.next());
}
}
- 結果
I/System.out: name A
I/System.out: name V
I/System.out: name S
I/System.out: name F
I/System.out: name G