何為命令模式
定義:將請(qǐng)求封裝為一個(gè)對(duì)象,從而可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化,
對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤銷的操作
靜態(tài)關(guān)系圖如下

命令模式
何時(shí)使用命令模式
1、想讓應(yīng)用程序支持撤銷與恢復(fù)
2、想用對(duì)象參數(shù)化一個(gè)動(dòng)作以執(zhí)行操作,并用不同命令對(duì)象來代替回調(diào)函數(shù)
3、想要在不同時(shí)刻對(duì)請(qǐng)求進(jìn)行指定、排列和執(zhí)行
4、想記錄修改日志、這樣在系統(tǒng)故障時(shí),這些修改可在后來重做一遍
5、想讓系統(tǒng)支持事務(wù),事務(wù)封裝了對(duì)數(shù)據(jù)的一系列修改。事務(wù)可以建模為命令對(duì)象

NSInvocation類的命令模式的新類圖

DrawScribbleCommand和相關(guān)類的類圖