天天看點

設計模式(14)疊代器模式

1 疊代器模式簡介

@1 疊代器模式

屬于行為型模式。它是Java 和微軟程式設計環境中非常常用的設計模式。這種模式用于順序通路集合對象的元素,不需要知道集合對象的底層表示。同時對于開發者而言,目前已經極少會自己去實作疊代器。注意:疊代器模式就是分離了集合對象的周遊行為,抽象出一個疊代器類來負責,這樣既可以做到不暴露集合的内部結構,又可讓外部代碼透明地通路集合内部的資料。

@2 4W1H 模型解讀疊代器模式

why 疊代器模式的意圖:提供一種方法順序通路一個聚合對象中各個元素, 而又無須暴露該對象的内部表示。主要應用場景和案例為:

Java/C++/C#中的 iterator。

通路一個聚合對象的内容而無須暴露它的内部表示。

需要為聚合對象提供多種周遊方式。

為周遊不同的聚合結構提供一個統一的接口。

what 主要解決:不同的方式來周遊整個整合對象。

when/where 何時使用:周遊一個聚合對象。

how 如何解決:把在元素之間遊走的責任交給疊代器,而不是聚合對象。

@3 疊代器模式優缺點

優點: 

它支援以不同的方式周遊一個聚合對象。

疊代器簡化了聚合類。

在同一個聚合上可以有多個周遊。

在疊代器模式中,增加新的聚合類和疊代器類都很友善,無須修改原有代碼。

缺點:由于疊代器模式将存儲資料和周遊資料的職責分離,增加新的聚合類需要對應增加新的疊代器類,類的個數成對增加,這在一定程度上增加了系統的複雜性。

@4 疊代器模式UML圖

設計模式(14)疊代器模式

2 疊代器模式簡單實作(Java)

代碼實作如下:

建立實作了 Container 接口的實體類,代碼實作如下: