1. 程式人生 > >迭代器模式(java版)

迭代器模式(java版)

迭代器模式的組成部分

Aggregate(抽象聚合類)

它用於儲存和管理元素物件,宣告一個createiterator()方法用於建立一個迭代器物件,充當抽象迭代器工廠角色。

 

ConcreteAggregate(具體聚合類)

它用於抽象聚合類的子類,實現了在抽象集合類中的宣告的createIterator()方法,該方法返回一個與該具體聚合類對應的具體迭代器ConcreteIterator例項。

Iterator

它定義了訪問和遍歷元素的介面,聲明瞭使用者遍歷資料元素的方法。

first()://用於獲取第一個元素

next();//用於訪問下一個元素

hasnext();//用於判斷是否還有下一個元素

currentitem();//用於獲取當前元素

ConcreteIterator

它實現了抽象迭代器介面,完成了對聚合物件的遍歷,同時在具體迭代器中通過遊標訪問來標記在聚合物件中所處的當前位置,在具體實現時,遊標通常是一個表示位置的非負整數。

 

 

程式碼如下:

package com.china.wanson;

public interface Iterator {
public boolean hasNext();
public Object next();

}


package com.china.wanson;

public interface List {

public void add(Object object);
public Object get(int index);
public Iterator interator();
public int getSize();

}

package com.china.wanson;

public class ConcreteAggregate implements List{

private Object[] list;
private int size=0;
private int index=0;


public void add(Object object) {

list[index++]=object;
size++;
}

public Object get(int index) {

return list[index];
}

public Iterator interator() {

return new ConcreteIterator(this);
}

public int getSize() {
return size;
}
}



package com.china.wanson;



public class ConcreteIterator implements Iterator {
private List list=null;
private int index;

public ConcreteIterator(List list){
super();
this.list=list;
}

public boolean hasNext() {
if(index>=list.getSize()){
return false;
}else{
return true;
}
}

public Object next() {
Object object=list.get(index++);
return object;
}
}