設計模式 迭代器模式

2021-10-23 09:22:43 字數 1872 閱讀 7270

迭代器模式(iterator pattern):提供一種方法來訪問聚合物件,而不用暴露這個物件的內部表示,其別名為游標(cursor)。迭代器模式是一種物件行為型模式。

在迭代器模式中,提供了乙個外部的迭代器來對聚合物件進行訪問和遍歷,迭代器定義了乙個訪問該聚合元素的介面,並且可以跟蹤當前遍歷的元素,了解哪些元素已經遍歷過而哪些沒有。迭代器的引入,將使得對乙個複雜聚合物件的操作變得簡單。

在迭代器模式中應用了工廠方法模式,抽象迭代器對應於抽象產品角色,具體迭代器對應於具體產品角色,抽象聚合類對應於抽象工廠角色,具體聚合類對應於具體工廠角色。

迭代器模式有如下幾個角色:

iterator(抽象迭代器):它定義了訪問和遍歷元素的介面,宣告了用於遍歷資料元素的方法,例如:用於獲取第乙個元素的first()方法,用於訪問下乙個元素的next()方法,用於判斷是否還有下乙個元素的hasnext()方法,用於獲取當前元素的currentitem()方法等,在具體迭代器中將實現這些方法。

concreteiterator(具體迭代器):它實現了抽象迭代器介面,完成對聚合物件的遍歷,同時在具體迭代器中通過游標來記錄在聚合物件中所處的當前位置,在具體實現時,游標通常是乙個表示位置的非負整數。

aggregate(抽象聚合類):它用於儲存和管理元素物件,宣告乙個createiterator()方法用於建立乙個迭代器物件,充當抽象迭代器工廠角色。

concreteaggregate(具體聚合類):它實現了在抽象聚合類中宣告的createiterator()方法,該方法返回乙個與該具體聚合類對應的具體迭代器concreteiterator例項。

說明 :

1)iterator :迭代器介面,是系統提供,含義 hasnext、next、remove

2)concreteiterator:具體的迭代器類,管理迭代。

3)aggregate :乙個統一的聚合介面,將客戶端和具體聚合解耦。

4)concreteaggreage :具體的聚合持有物件集合,並提供乙個方法,返回乙個迭代器,該迭代器可以正確遍歷集合

5)client:客戶端,通過iterator和aggregate依賴子類。

各個角色之間結構關係如下:

1.建立iterator(抽象迭代器)

public

inte***ce

iterator

2.建立concreteiterator(具體迭代器)

public

class

nameiterator

implements

iterator

return

false;}

@override

public object next()

return null;

}}

3.因為是簡單示例,aggregate(抽象聚合類)與concreteaggregate(具體聚合類)暫時用乙個簡單實現

public

class

letter

;public iterator getiterator()

}

4.建立client(main)

public

class

iteratormain

}}

設計模式 迭代器模式

迭代器模式是屬於物件行為性的模式。首先是定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露物件的表示方法。迭代器的結構圖 適用性 1 訪問乙個聚合物件的內容而無需暴露它的內部表示 2 支援聚合物件的多種遍歷 3 為遍歷不同的聚合結構提供乙個統一的介面 支援多型迭代 協作 concretei...

設計模式 迭代器模式

iterator,提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構,又可讓外部 透明地訪問集合內部的資料。iterator迭代器抽象類 迭代器抽象類 abstract clas...

設計模式 迭代器模式

迭代器模式在我們日常程式設計中使用非常頻繁,像list map 陣列等都會用到迭代器模式。迭代器模式屬於行為型模式,它用於順序訪問集合物件的元素,不需要知道集合物件的底層表示。在迭代器模式結構圖中包含如下幾個角色 它支援以不同的方式遍歷乙個聚合物件。迭代器簡化了聚合類。在同乙個聚合上可以有多個遍歷。...