4.Java設計模式-->迭代器模式
阿新 • • 發佈:2019-02-20
1.迭代器例項需要的方法
Iterator.java
interface Iterator{
boolean hitEnd();//使用偏移量判斷是否到達物件底部
Object getContent();//取出當前元素,偏移量+1
}
2.需要進行迭代的物件例項需要提供的方法
List.java
interface List {
void add( Object obj);
Object get( int index);
int getSize();
Iterator getIterator();//直接在這步填 this ?
}
.
.
3.根據需要迭代物件一定擁有的辦法,構造具體的迭代器
ConcreteIterator.java
public class ConcreteIterator{
private List list;
private int index;
public ConcreteIterator( List list){
super();
this.list = list;
}
@Override
public boolean hitEnd(){
if( index >= list.getSize() ){
return true;
}else{
return false;
}
}
@Override
public Object getContent(){
Object object = list.get( index);
index++;
return object;
}
}
4.構造具體的需要迭代物件
Aggregate.java
public class Aggregate implements List{
private Object[] list;
private size = 0;
private index = 0;
public Aggregate(){
lists = new Object[100];//先在方法外宣告引用型別變數,再在方法內部,用 new 關鍵字進行堆疊的連線.
size=0;
index=0;
}//初始化變數.
//依照超類規定必須實現的方法,依次填充
@Override
public Object get( int index){
return lists[ index];
}
@Override
public void add( Object obj){
list[size++]=obj;
}
@Override
public Iterator getIterator(){
return new ConcreteIterator( this);
}
.
.
5.測試
Test.java
public class Test {
pubic static void main( String[] args){
List mList = new Aggregate();
mList.add(1);
mList.add("yi");
mList.add("one");
Iterator iter = mList.getIterator();
while( !iter.hitEnd ){
System.out.println( iter.getContent() );
}