????定義:又稱為游標模式,它提供一種順序訪問集合/容器對象元素的方法吆倦,而又無須暴露集合內(nèi)部表示听诸。屬于行為型模式。
? ? 本質(zhì):抽離集合對象迭代行為到迭代器中蚕泽,提供一致訪問接口晌梨。
? ? 適用場景:訪問一個集合對象的內(nèi)容而無需暴露它的內(nèi)部表示;為遍歷不同的集合結(jié)構(gòu)提供一個統(tǒng)一的訪問接口。
? ? 優(yōu)點:
? ? ? ? a.多態(tài)迭代:為不同的聚合結(jié)構(gòu)提供一致的遍歷接口仔蝌,即一個迭代接口可以訪問不同的聚合對象泛领;
? ? ? ? b.簡化集合對象接口:迭代器模式將集合對象本身應該提供的元素迭代接口抽取到了迭代器中,使集合對象無需關心具體迭代行為敛惊;
? ? ? ? c.元素迭代功能多樣化:每個集合對象都可以提供一個或多個不同的迭代器渊鞋,使得同種元素聚合結(jié)構(gòu)可以有不同的迭代行為;
? ? ? ? d.解耦迭代與集合:迭代器模式封裝了具體的迭代算法豆混,迭代算法的變化篓像,不會影響到集合對象的架構(gòu)。
? ? 缺點:對于比較簡單的遍歷(像數(shù)組或者有序列表)皿伺,使用迭代器方式遍歷較為繁瑣员辩。
? ? 源碼中的體現(xiàn):JDK中的Iterator、mybatis中的DefaultCursor鸵鸥。
代碼
類圖
Course
Iterator
ICourseAggregate
IteratorImpl
CourseAggregateImpl
Test