@(設計模式)[設計模式, 迭代器模式, 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
介面扮演這個角色, 它定義了hasnext
和next
兩個方法。其中,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...