1. 程式人生 > 實用技巧 >迭代器模式(行為型)

迭代器模式(行為型)

設計模式的3個分類:建立型模式、結構型模式、行為型模式

迭代器模式定義:

所謂迭代器模式,就是提供一種方法順序訪問一個容器物件的各個元素,而又不需要暴露該物件的內部表示的設計模式。

迭代器(Iterator)模式,又叫做遊標(Cursor)模式。

Java中的Map、List等等容器,都使用到了迭代器模式。

Android中的SQLiteDatabase的query方法查詢資料庫時,會返回一個Cursor遊標物件,也是一個迭代器。

迭代器模式圖示:

(注: 迭代器模式分離了集合物件的遍歷行為,抽象出一個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部程式碼透明地訪問集合內部的資料。)

程式碼實現:

public interface Iterator {

    boolean hasNext();

    Object next();

}

public interface Container {

    Iterator getIterator();
}

//實現Container介面,並通過內部類實現Iterator介面
public class NameRepository implements Container {

    private String[] names = {"Robert", "John", "Julie", "Lora"};

    @Override
    public Iterator getIterator() {
        return new NameIterator();
    }

    private class NameIterator implements Iterator {

        int index;

        @Override
        public boolean hasNext() {
            if (index < names.length) {
                return true;
            }
            return false;
        }

        @Override
        public Object next() {
            if (this.hasNext()) {
                return names[index++];
            }
            return null;
        }
    }
}

/**
 * 測試
 */
public class IteratorPatternDemo {

    public static void main(String[] args) {

        NameRepository nameRepository = new NameRepository();

        Iterator iterator = nameRepository.getIterator();
        while (iterator.hasNext()) {
            String name = (String) iterator.next();
            System.out.println("name = " + name);
        }

    }
}

--End