行為型模式之迭代器模式

定義:(又叫做游標(biāo)模式)

? ? 一種行為型模式

? ? 允許對一組對象元素遍歷,是一種比較常見的設(shè)計模式

由來:

? ? 我們知道對于數(shù)據(jù)的存儲結(jié)構(gòu)可能會多種多樣,那對于數(shù)據(jù)的遍歷如果依賴數(shù)據(jù)的存儲結(jié)構(gòu)的化就會存在很多種遍歷的方式。所以出現(xiàn)了迭代器模式,不依賴數(shù)據(jù)存儲的數(shù)據(jù)結(jié)構(gòu),即抽象出一個迭代器

UML類圖:

1

實現(xiàn)步驟:

? ? 1:在容器類(聚合類)中添加一個iterator方法,獲取一個迭代器,并賦予迭代器數(shù)據(jù)訪問權(quán)。

? ? 2:設(shè)計一個迭代器用于對容器類內(nèi)封裝數(shù)據(jù)的遍歷

? ? 3:客戶端請求容器類(聚合類)對象創(chuàng)建一個迭代器對象

? ? 4:客戶端使用迭代器的方法,first(),hasNext(),next()等訪問容器類中的元素

代碼實現(xiàn):

? ? 模擬菜單中的菜品遍歷

? ? 1:數(shù)據(jù)類---菜品

2

2:菜單類 -- 可以理解為具體的存放數(shù)據(jù)的容器 XXCollection

3

容器類中需要定義一個iterator方法去獲取到一個迭代器。此處因為jdk中定義好了Iterator接口,所以這里采用了一個內(nèi)部類去實現(xiàn)Iterator迭代器接口,內(nèi)部類MenuIterator就是一個具體的迭代器類。

4

客戶端:

5

結(jié)果:

6

模式總結(jié):

? ? 1:提供了一種方式來順序訪問集合對象中的內(nèi)容,而無需暴漏其內(nèi)部數(shù)據(jù)結(jié)構(gòu)(例如Menu的內(nèi)部存儲數(shù)據(jù)客戶端不需要知道,在遍歷Menu中數(shù)據(jù)時采用Iterator去遍歷)。

? ? 2:為遍歷不同的集合容器類提供了統(tǒng)一的接口。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容