go實現設計模式系列文章 迭代器模式

2021-10-25 05:41:52 字數 1815 閱讀 1211

迭代器模式的作用是對集合中的元素進行某種規則的遍歷(一般是順序遍歷),是不是跟大家經常用的for迴圈很像?

不過迭代器對其進行了抽象化通用化

下面看下示例(我們用迭代器模式來實現書架書籍的遍歷)。

package iterator

type aggregate inte***ce

package iterator

type iterator inte***ce

}

package iterator

type bookshelf struct

// 實現介面方法

func

(bs *bookshelf)

iterator

() iterator

}func

(bs *bookshelf)

addbook

(book *book)

package iterator

type bookshelfiterator struct

func

(bs *bookshelfiterator)

setbookshelf

(bookshelf *bookshelf)

//實現介面方法

func

(bs *bookshelfiterator)

hasnext()

bool

//實現介面方法

func

(bs *bookshelfiterator)

next()

inte***ce

package iterator

type book struct

func

(b *book)

getname()

string

package main

import

("dp/iterator"

"fmt"

)func

main()

book2 :=

&iterator.book

book3 :=

&iterator.book

// 例項化書架

bookshelf :=

&iterator.bookshelf

// 新增書籍

bookshelf.

addbook

(book1)

bookshelf.

addbook

(book2)

bookshelf.

addbook

(book3)

// 獲取迭代器

iter := bookshelf.

iterator()

// 迭代列印元素

for iter.

hasnext()

}

迭代器的組成元素有集合介面集合實現迭代介面迭代實現組成元素這五部分。

我們看到,在迴圈迭代部分,**並不依賴於集合資料的具體實現,無論其是陣列實現還是鍊錶或者其他資料結構,我們完全不用考慮。在工程應用中,我們可以進行靈活的擴充套件、修改,充分利用其靈活性和可擴充套件性。

JAVA系列 設計模式 迭代器模式

定義 提供一種方法訪問乙個容器物件中各個元素,而又不暴露該物件的內部細節。我們的list遍歷就是用迭代器模式實現的。類圖 迭代器定義訪問和遍歷元素的介面。author administrator public inte ce iterator package iterator public clas...

PHP設計模式系列 迭代器

可幫助構造特定的物件,那些物件能夠提供單一標準介面迴圈或迭代任何型別的可計數資料。不是特別常用,在php中 1.訪問乙個聚合物件的內容而無需暴露它的內部表示。2.支援對聚合物件的多種遍歷。3.為遍歷不同的聚合結構提供乙個統一的介面 即,多型迭代 迭代器 可幫助構造特定的物件,那些物件能夠提供單一標準...

PHP設計模式系列 迭代器

可幫助構造特定的物件,那些物件能夠提供單一標準介面迴圈或迭代任何型別的可計數資料。不是特別常用,在php中 1.訪問乙個聚合物件的內容而無需暴露它的內部表示。2.支援對聚合物件的多種遍歷。3.為遍歷不同的聚合結構提供乙個統一的介面 即,多型迭代 php 實現 迭代器 可幫助構造特定的物件,那些物件能...