1. 程式人生 > >JAVA 設計模式 迭代器模式

JAVA 設計模式 迭代器模式

用途

迭代器模式 (Iterator) 提供一種方法順序訪問一個聚合物件中各個元素,而又不暴露該物件的內部表示
迭代器模式是一種行為型模式結構

圖-迭代器模式結構圖

Iterator : 定義訪問元素的介面。 interface Iterator {
    public Object first();
    public Object next();
    public boolean isDone();
    public Object currentItem();
}

ConcreteIterator : 實現 Iterator 介面。記錄當前訪問的元素在集合中的位置資訊。

class ConcreteIterator implements Iterator {
    private int current = 0;
    private ConcreteAggregate aggregate;
    
    public ConcreteIterator(ConcreteAggregate aggregate) {
        this.aggregate = aggregate;
    }

    @Override
    public Object first() {
        return aggregate.get(0);
    }

    @Override
    public
 Object next() {
        current++;
        if (current < aggregate.size()) {
            return aggregate.get(current);
        }
        return null;
    }

    @Override
    public boolean isDone() {
        return (current >= aggregate.size()) ? true : false;
    }

    @Override
    public Object currentItem() {
        return
 aggregate.get(current);
    }
}

Aggregate : 定義建立 Iterator 物件的介面。

interface Aggregate {
    public Iterator CreateIterator();
}

ConcreteAggregate : 實現 Iterator 介面,返回一個合適的 ConcreteIterator 例項。

class ConcreteAggregate implements Aggregate {
    private List<Object> items = new ArrayList<Object>();
    
    @Override
    public Iterator CreateIterator() {
        return new ConcreteIterator(this);
    }
    
    public int size() {
        return items.size();
    }
    
    public Object get(int index) {
        return items.get(index);
    }
    
    public void set(int index, Object element) {
        items.set(index, element);
    }
    
    public void add(Object element) {
        items.add(element);
    }
}

測試程式碼

public class IteratorPattern {
    public static void main(String[] args) {
        ConcreteAggregate aggregate = new ConcreteAggregate();
        aggregate.add("張三");
        aggregate.add("李四");
        aggregate.add("王五");
        aggregate.add("趙六");
        
        Iterator iter = new ConcreteIterator(aggregate);
        Object item = iter.first();
        System.out.println("第一個人是:" + item);
        System.out.println("所有人的名單是:");
        while (!iter.isDone()) {
            System.out.println(iter.currentItem());
            iter.next();
        }
    }
}

執行結果

第一個人是:張三
所有人的名單是:
張三
李四
王五
趙六 應用場景 訪問一個聚合物件的內容而無需暴露它的內部表示。
支援對聚合物件的多種遍歷。
為遍歷不同的聚合結構提供一個統一的介面。 推薦 參考資料

《大話設計模式》

《HeadFirst設計模式》

相關推薦

重走Java設計模式——模式(Iterator Pattern)

迭代器模式 定義 提供一種方法順序訪問一個聚合物件中各個元素, 而又無須暴露該物件的內部表示。 模式結構 1.抽象容器:一般是一個介面,提供一個iterator()方法,例如java中的Collection介面,List介面,Set介面等。 2.具體

Java設計模式——模式

迭代器模式的定義是:   提供一種方法順序訪問一個聚合物件中的各個元素,而又不暴露其內部表示 問題:   這裡引用《Head First》中的一個示例,如果一個聚合物件(選單)中存在兩種不同的儲存結構(ArrayList & Array),該如何操作?   如果是簡單的逐個遍歷,程式

java設計模式——模式(Iterator Pattern)

概述:          在軟體開發中,我們經常需要使用聚合物件來儲存一系列資料。聚合物件擁有兩個職責:一是儲存資料;二是遍歷資料。從依賴性來看,前者是聚合物件的基本職責;而後者既是可變化的,又是可分離的。因此,可以將遍歷資料

淺談Java設計模式——模式(Iterator)

一、概述         給定一個語言,定義它的文法的一種表示,並定義一個直譯器,這個直譯器使用該表示來解釋語言中的句子。 二、使用場景 1.訪問一個聚合物件的內容而無需暴露它的內部表示。  2.支援對聚合物件的多種遍歷。  3.為遍歷不同的聚合結構提供一個統一的介

java設計模式----模式

定義 在軟體構建過程中,集合物件內部結構常常變化各異,但對於這些集合物件,我們希望在不暴露其內部結構的同時,可以讓外部客戶程式碼透明地訪問其中包含的元素;同時這種“透明遍歷”也為同一種演算法在多種集合物件上進行操作提供了可能。 使用面向物件技術將這種遍歷機制抽象為“迭代器物件”為“應對

JAVA 設計模式 模式

用途 迭代器模式 (Iterator) 提供一種方法順序訪問一個聚合物件中各個元素,而又不暴露該物件的內部表示。 迭代器模式是一種行為型模式。 結構 圖-迭代器模式結構圖 Iterat

設計模式Java隨筆)—模式

迭代器模式(Iterator Pattern):最常被使用的幾個模式之一,被廣泛的應用到Java API中,如Java集合(Collection)框架中,就有用迭代器來遍歷集合中的元素(在Java開發中,儘量不要自己寫迭代器模,使用Java API提供的Iterator一般就

Java設計模式——模式(Iterator Pattern)

場景一 描述:週五下午,我正在看技術網站,第六感官發覺有人在身後,扭頭一看,我C,老大站在背後,趕忙站起來, “王經理,你找我?” 我說。 “哦,在看技術呀。有個事情找你談一下,你到我辦公室來一下。” 老大說。 到老大辦公室, “是這樣,剛剛我在看季報,我們每個專案的支出費

Java設計模式--模式【Iterator Pattern】

          在Java中,因為從JDK 1.2 版本開始增加java.util.Iterator 這個介面,並逐步把Iterator 應用到各個聚集類(Collection)中,我們來看JDK 1.5 的API 幫助檔案,你會看到有一個叫java.util.Iter

設計模式 | 模式及典型應用

本文的主要內容: 介紹迭代器模式 原始碼分析迭代器模式的典型應用 Java集合中的迭代器模式 Mybatis中的迭代器模式 更多內容可訪問我的個人部落格:laijianfeng.org 關注【小旋鋒】微信公眾號,及時接收博文推送

設計模式 --- 模式

1.定義 提供一種方法順序訪問一個容器物件中的各個元素,而又不需要暴露該物件的內部表示。   2.使用場景 遍歷一個容器物件   3.簡單實現 大部分容器類都有提供迭代方法 不需要我們自己實現,這裡實現一個通用程式碼。 //迭代器介面 interf

設計模式-模式(Iterator)

概述 定義 : 提供一種方法, 順序訪問一個集合物件中的各個元素, 而又不暴露該物件的內部表示 型別 : 行為型 適用場景 訪問一個集合物件的內容而無需暴露它的內部表示 為遍歷不同的集合結構提供一個統一的介面 優點 分離了集合物件的遍歷

移動開發之設計模式-模式(IOS&Android)

資源 完全參照 迭代器模式|菜鳥教程 ,但不包括IOS程式碼 迭代器模式 迭代器模式(Iterator Pattern)是 Java 和 .Net 程式設計環境中非常常用的設計模式。這種模式用於順序訪問集合物件的元素,不需要知道集合物件的底層表示。 迭代器模式屬於行為型模式。

設計模式模式(IteratorPattern)

核心模組:迭代器角色(定義訪問和遍歷元素的介面),具體迭代器角色,容器角色,具體容器角色 所有程式碼請訪問:[email protected]:289804201/PatternLearn.git 使用場景:外部物件訪問內部聚合物件; 優點:將儲存資料和

JavaScript設計模式--模式

迭代器模式是指提供一種方法順序訪問一個聚合物件中的各個元素,而又不需要暴露該物件的內部表示。 JavaScript中的Array.prototype.forEach 一、jQuery中的迭代器

17-Python與設計模式--模式

一、迭代器與生成器 今天的主角是迭代器模式。在python中,迭代器並不用舉太多的例子,因為python中的迭代器應用實在太多了(不管是python還是其它很多的程式語言中,實際上迭代器都已經納入到了常用的庫或者包中)。而且在當前,也幾乎沒有人專門去開發一個迭代器,而是直接去使用list、string、se

設計模式--模式與組合方法模式

迭代器模式是將對物件的遍歷封裝成迭代器,對外部隱藏物件遍歷的具體實現。 而組合方法是實現對處於不同層次的同種物件提供一致性的遍歷方法。 首先我們開始討論迭代器模式。 我們在實踐過程中可以遇到這樣的情況,我們需要對用array,ArrayList,Stack  等模式包裝的

設計模式--模式

迭代器模式(Iterator Pattern) 迭代器模式(Iterator Pattern)是java和.Net程式設計環境中非常常用的設計模式。這種模式用於順序訪問集合物件的元素,不需要知道集合物件的底層實現。大類劃分為行為型模式。 介紹 意圖:提

設計模式-模式(Iterator Pattern)

模板方法:提供一種方法順序訪問一個聚合物件中的各個元素,而又不暴露其內部的表示。 迭代器模式把在元素之間遊走的責任交給迭代器,而不是聚合物件。這不僅讓聚合的介面和實現變得更簡潔,也可以讓聚合物件更專注在它所應該專注的事情上面(也就是管理物件集合),而不必去理會遍歷的事情。

PHP設計模式——模式

宣告:本系列部落格參考資料《大話設計模式》,作者程傑。        迭代器模式:迭代器模式是遍歷集合的成熟模式,迭代器模式的關鍵是將遍歷集合的任務交給一個叫做迭代器的物件,它的工作時遍歷並選擇序列