迭代器模式

2021-09-19 08:49:04 字數 767 閱讀 4641

提供一種方法順序訪問乙個聚合物件中的各個元素,而不暴露其內部的表示。

被呼叫方的操作細節都封裝在類中,而不需要被客戶端知曉,比如利用迭代器封裝類的遍歷方式,就不用管目標類中用的是陣列,列表,集合來作為容器,我們只需要獲取迭代器,迭代器由具體的目標類來實現,客戶端就不用操心這這個事情了。

乙個類應該只有乙個引起變化的原因。也就是說乙個類只有乙個責任,只支援一組相關的功能,這就是高內聚。高內聚可以避免因為修改**而影響其他方面而造成許多潛在的錯誤。這是一件很困難的事情,需要長期努力不懈的檢查你的設計。遵守這個原則的類具有很高的凝聚力,且更容易維護。

迭代器告訴我們的不僅僅是一種集合遍歷的模版,更是告訴我們,如果一批類要實現同一種功能,那麼就讓他們實現相同的介面,這樣通過介面,客戶端就可以管理這樣一批類了,即使擴充套件了其他的類,也可以通過這種方式進行管理,達到可擴充套件的目的。

就像collection下的集合家族,擁有的add() remove() iterator() size() toarray()等方法,都是這種思想,客戶端只需要使用方法就可以了,不用關心具體的實現類,從而呼叫方就解耦了。

乙個集合,可以有各種各樣的實現方式,以後可能還會擴充更多的實現方式。集合的功能是修改元素和讀取元素,在讀取元素的時候,如何實現統一呢?這就是迭代器模式的魅力所在,呼叫方透明的遍歷各種集合,而不用了解其內部的細節資訊,達到了解耦的目的。這是實現共同介面的一種昇華。

抽離變化部分:變化的部分是集合的實現方式不一樣,因此遍歷的時候,遍歷的方法是不一樣的。但是可以通過hasnext(),next()這種遍歷共性行為,來統一管理集合的遍歷。

迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而不是暴露該物件的內部表示。乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮用迭代器模式。你需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一...

迭代器模式

我最早接觸的設計模式就是迭代器模式了哈 為什麼要有迭代器模式呢?看下下面的 就知道了哈 對於乙個陣列物件sz 我們要怎麼遍歷呢?public void bianlisz class geweishu public myiterator getiterator private class geweis...

迭代器模式

迭代器模式 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件多的內部表示。1 iterator抽象類 public abstract class iterator 2 aggregate聚集抽象類 public abstract class aggregate 3 concreteite...