1. 程式人生 > >4.Java設計模式-->迭代器模式

4.Java設計模式-->迭代器模式

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() );
        }