迭代器模式、命令模式

迭代器模式

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

迭代器模式的本質(zhì)是抽離集合對(duì)象行為到迭代器中,提供一致訪問接口

類圖結(jié)構(gòu)

image.png

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.需要支持命令宏

類圖

image.png

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)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容