迭代器模式
又稱為游標(biāo)模式,它提供一種順序訪問集合/容器對(duì)象元素的方法,而又無須暴露集合內(nèi)部表示。迭代器模式可以為不同的容器提供一致的遍歷行為,而不用關(guān)系容器內(nèi)容元素組成結(jié)構(gòu)
屬于行為型模式
迭代器模式的本質(zhì)是抽離集合對(duì)象行為到迭代器中,提供一致訪問接口
類圖結(jié)構(gòu)

jdk Iterator
Iterator主要有兩個(gè)方法
hasNext 和 next
優(yōu)點(diǎn)
1.多態(tài)迭代,不同聚合結(jié)構(gòu)提供一致的遍歷接口,即一個(gè)迭代接口可以訪問不同的集合對(duì)象
2.簡(jiǎn)化集合對(duì)象接口:迭代器模式將集合對(duì)象本身應(yīng)該踢動(dòng)的元素迭代接口抽取到了迭代器中,使集合對(duì)象無序關(guān)心具體迭代行為
3.元素迭代功能多樣化,每個(gè)集合對(duì)象都可以提供一個(gè)或多個(gè)不同的迭代器,使得同種元素聚合結(jié)構(gòu)可以有不同的迭代行為
4.解耦迭代與集合,迭代器模式,封裝了具體的迭代算法,迭代算法的變化,不會(huì)影響到集合對(duì)象的架構(gòu)
缺點(diǎn)
1.對(duì)于比較簡(jiǎn)單的遍歷,較為繁瑣
命令模式
命令模式是對(duì)命令的鳳凰組昂,每一個(gè)命令都是一個(gè)操作;請(qǐng)求的一方發(fā)出要求執(zhí)行一個(gè)操作;接受的一方收到請(qǐng)求,并執(zhí)行操作。命令模式解耦了請(qǐng)求方和接收方,請(qǐng)求方只需請(qǐng)求執(zhí)行命令,不用關(guān)系命令是怎樣被接受,怎樣被操作以及是否被執(zhí)行
應(yīng)用場(chǎng)景
1
語義具備命令的操作
2.請(qǐng)求調(diào)用者和請(qǐng)求的接受者需要解耦,不直接交互
3.需要抽象出等待執(zhí)行的行為,如撤銷操作和回復(fù)等操作
4.需要支持命令宏
類圖

receiver 負(fù)責(zé)具體實(shí)施或執(zhí)行一個(gè)請(qǐng)求
command 定義需要執(zhí)行的所有命令行為
concretecommand 維護(hù)一個(gè)receiver,在其execute方法匯總調(diào)用receiver的方法
invoker 接收客戶端命令,執(zhí)行命令
如:遙控器
如 runnable中的start命令
調(diào)用start(),就會(huì)去搶cpu資源,然后執(zhí)行run()
優(yōu)點(diǎn)
1.通過引入中間件,解耦命令請(qǐng)求和實(shí)現(xiàn)
2.擴(kuò)展性良好,可以很容易增加新命令
3.支持組合命令,
4.擴(kuò)展方便
缺點(diǎn)
導(dǎo)致類過多,引入額外結(jié)構(gòu)