一、概念
1.1局骤、定義
用于順序訪問集合對象的元素攀圈,不需要知道集合對象的底層表示。
Iterator.png
- Container峦甩,容器類:定義存儲元素對象列表赘来,實現(xiàn)add和remove接口。
- Iterator凯傲,迭代類:元素對象需要間接依賴于容器類對象里列表犬辰,同時實現(xiàn)hasNext和next接口。
1.2冰单、解決的問題
問題分析:
對于集合數(shù)據(jù)的遍歷訪問 和 存儲過程 不同幌缝,存儲過程先對固定,而訪問遍歷確可能變化诫欠。模式的解決思路:
迭代器模式就是分離了集合對象的遍歷行為狮腿,抽象出一個迭代器類Iterator來負責,這樣既可以做到不暴露集合的內(nèi)部結(jié)構(gòu)呕诉,又可讓外部代碼透明地訪問集合內(nèi)部的數(shù)據(jù)缘厢。
二、模式的應(yīng)用和優(yōu)缺點
2.1甩挫、應(yīng)用場景
- 實例:
JAVA 中的 iterator
2.2贴硫、優(yōu)缺點
優(yōu)點:
1、易于擴展聚合數(shù)據(jù)的遍歷方式伊者,如正序遍歷英遭、倒敘遍歷等
2、數(shù)據(jù)的存儲過程和遍歷過程剝離亦渗,方便彼此擴展缺點:
優(yōu)點即缺點挖诸,數(shù)據(jù)的存儲過程和遍歷過程剝離,會導(dǎo)致類的數(shù)量增加法精,增加系統(tǒng)復(fù)雜性多律。