設計模式之迭代器和組合模式

2021-08-10 22:28:45 字數 1109 閱讀 8970

迭代器模式

1、簡介:迭代器模式提供一種方法訪問乙個聚合物件中的各個元素,而***不暴露其內部實現方式。

(1)它讓我們能夠遊走在各種聚合型別資料的每乙個元素之間,而有無需讓大家知道遊走的什麼型別的聚合,反正都能夠達到迴圈輸出元素的目的。(2)它能夠把遊走的任務搬到迭代器上,而不再使用各種適合自己聚合型別的foreach來遊走遍歷元素。使得聚合和迭代器的任務各得其所。

這種模式能夠解決,在乙個系統中,存在不同儲存資料的聚合型別的整合。想要簡化**,遊走遍歷每種聚合的每乙個元素,就需要使用迭代器來簡化。讓對應的聚合型別整合迭代器iterator,就能夠使用hasnext()和next()方法。這樣的簡化使得聚合物件只負責儲存資料,而由迭代器來遍歷遊走元素。

2.這裡付一段簡單的**。

//定義乙個迭代器介面

public

inte***ce iterator

//午餐迭代器實現迭代器介面

public

class dinermenuiterator implents iterator()

public object hasnext()

public boolean hasnext()else

}}//餐廳午餐選單

public

class dinnermenu

}//這裡省略以arraylist儲存形式的集合定義,名稱定義為coffeeiterator。同上的iterator。

//女招待員對每個選單的操作,無需知道其如何實現,直接使用iterator對集合進行操作

public

class waitreess

public

void

printmenu()

public

void

printmenu(iterator iterator)

}}

3、**整合優化之後,發現這種方式和一種模式很像—-由子類來決定建立什麼—–【工廠方法模式】。

這裡叫做「迭代器和組合模式」。

後面有一部分關於迭代器的深入講解,lue

4、「單一責任原則」:乙個類應該只有乙個引起變化的原因。

設計模式 迭代器和組合模式

給餐廳選單加入乙個迭代器 public inte ce iterator boolean hasnext object next public class dinermenuiterator implements iterator menuitem items int position 0 publ...

設計模式 迭代器和組合模式

另外做為迭代器,首先你要獲取資料 構造方法 你至少要有最小的執行單位,乙個是next 來獲取下乙個資料,那隨之而來就需要判斷下乙個是否存在,需要hasnext 方法,再加remove 方法。並且聚合物件要實現迭代器介面,這樣客戶端就可以針對介面程式設計,還要需要返回乙個迭代器方法,把聚合物件傳入進去...

設計模式之組合模式與迭代器模式

讀書筆記 headfirst 設計模式 大話設計模式 使用場景 單一責任原則 單一責任 乙個類應該只有乙個引起變化的原因 內聚 用來度量乙個類或模組緊密的達到單一目的或責任 類圖 迭代器模式 提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露該物件的內部表示 空迭代器 如果集合中沒有什麼可以遍...