迭代器模式的作用是對集合
中的元素
進行某種規則的遍歷
(一般是順序遍歷),是不是跟大家經常用的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 實現 迭代器 可幫助構造特定的物件,那些物件能...