設計模式學習筆記 迭代器 Iterator 模式

2021-07-27 18:14:01 字數 3526 閱讀 5504

@(設計模式)[設計模式, 迭代器模式, iterator, 迭代器]

迭代器模式中的角色

迭代器模式是從集合中取出元素進行遍歷。

迭代器模式主要用於將資料的遍歷訪問與實現進行分離。

迭代器種類有很多,像是由前往後,由後往前,跳躍遍歷等等。

aggregate介面

package com.pc.iterator.example;

/** * 集合介面

* created by switch on 17/1/18.

*/public

inte***ce

aggregate

iterator介面
package com.pc.iterator.example;

/** * 迭代器介面

* created by switch on 17/1/18.

*/public

inte***ce

iterator

book類
package com.pc.iterator.example;

/** * 書籍類

* created by switch on 17/1/19.

*/public

class

book

public

book(string name)

public

void

setname(string name)

public string getname()

@override

public string tostring() ';}}

bookshelf類
package com.pc.iterator.example;

/** * 書架類

* created by switch on 17/1/19.

*/public

class

bookshelf

implements

aggregate

/*** 根據索引獲取書籍中的書籍

**@param index 索引

*@return 索引對應的書籍

*@throws arrayindexoutofbound***ception

*/public book getbookat(int index) throws arrayindexoutofbound***ception

/*** 獲取書架上的書籍本書

**@return 書籍本書

*/public

intgetlength()

/*** 新增書籍到書架末尾

**@param book 書籍

*/public

void

add(book book)

@override

public iteratoriterator()

}

bookshelfiterator類
package com.pc.iterator.example;

/** * 書架迭代器(正序遍歷迭代器)

* created by switch on 17/1/19.

*/public

class

bookshelfiterator

implements

iterator

@override

public

boolean

hasnext()

return

true;

}@override

public book next()

}

測試類
package com.pc.iterator.example.test;

import com.pc.iterator.example.book;

import com.pc.iterator.example.bookshelf;

import com.pc.iterator.example.iterator;

import org.junit.before;

import org.junit.test;

/** * 書架迭代器測試

* created by switch on 17/1/19.

*/public

class

bookshelfiteratortest

/*** 測試迭代器

*/@test

public

void

testiterator() }}

執行結果
book

book

book

book

book

book

book

book

book

book

該角色負責定義按順序逐個遍歷元素的介面(api)。在示例程式中,由iterator介面扮演這個角色, 它定義了hasnextnext兩個方法。其中,hasnext方法用於判斷是否存在下乙個元素,next方法則用於獲取該元素。

該角色負責實現iterator角色所定義的介面(api)。在案例中,由bookshelfiterator類扮演這個角色。該角色中包含了遍歷集合所必需的資訊。在案例中,bookshelf類的例項儲存在bookshelf欄位中, 被指向的書的下標儲存在index欄位中。

該角色負責定義建立iterator角色的介面(api)。這個介面(api)是乙個方法, 返回iterator型別。在案例中,由aggregate介面扮演這個角色,它裡面定義了iterator方法。

該角色負責實現aggregate角色所定義的介面(api)。它會建立出具體的iterator角色, 即concreteiterator角色。在案例中,由bookshelf類扮演這個角色, 它實現了iterator方法。

——————參考《**設計模式》

設計模式學習筆記 迭代器模式

迭代器模式據說有人要將它從設計模式中剔除,原因是各種語言基本都內建了這種模式,比如c 的foreach語句,實在是太平常了,不值得特別一提。但我對這個迭代器,尤其是.net的ienumerable ienumerator甚感迷惑,有必要總結一下。迭代器模式,主要由兩部分組成 聚集器和迭代器。聚集器代...

設計模式筆記(十六) 迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。使用場合 乙個聚集物件,不管這些物件是什麼的都需要遍歷的時候,你就需要考慮迭代器模式。迭代器模式在訪問陣列 集合 列表資料時,尤其是資料庫操作時,是非常普遍的應用,但是由於它太普遍了,所以各種高階語...

13 迭代器模式 設計模式筆記

場景 提供一種可以遍歷聚合物件的方式。又稱為 游標cursor模式 聚合物件,儲存資料 迭代器 遍歷資料 開發中常見的場景 jdk內建的迭代器 list set public inte ce myiterator 自定義的聚合類 author administrator public class c...