類型 3:行為 - 命令設(shè)計(jì)模式
行為設(shè)計(jì)模式側(cè)重于類和對(duì)象如何相互通信。命令模式的主要重點(diǎn)是在相關(guān)方(閱讀:類)之間灌輸更高程度的松散耦合。
呃......什么?
耦合是兩個(gè)(或多個(gè))相互交互的類相互作用的方式。這些類交互的理想方案是它們不會(huì)嚴(yán)重依賴彼此。這就是松散耦合。因此,松散耦合的更好定義是,相互連接的類,彼此使用最少。
當(dāng)需要發(fā)送請(qǐng)求而沒(méi)有有意識(shí)地知道您要求什么或接收者是誰(shuí)時(shí),就產(chǎn)生了對(duì)這種模式的需求。
在此模式中,調(diào)用類與實(shí)際執(zhí)行操作的類分離。調(diào)用程序類僅具有可調(diào)用方法 execute,該方法在客戶端請(qǐng)求它時(shí)運(yùn)行必要的命令。
讓我們舉一個(gè)基本的真實(shí)例子,在一家高檔餐廳點(diǎn)餐。隨著流程的進(jìn)行,您將訂單(命令)交給服務(wù)員(調(diào)用者),然后服務(wù)員將其交給廚師(接收者),以便您可以獲得食物。可能聽起來(lái)很簡(jiǎn)單...但有點(diǎn)麻煩的代碼。
這個(gè)想法很簡(jiǎn)單,但編碼是繞鼻子走的。
命令設(shè)計(jì)模式類圖
技術(shù)端的操作流程是,你做一個(gè)具體的命令,實(shí)現(xiàn)命令接口,要求接收方完成一個(gè)動(dòng)作,然后把命令發(fā)送給調(diào)用者。調(diào)用者是知道何時(shí)發(fā)出此命令的人。廚師是唯一知道在給定特定命令/命令時(shí)該怎么做的人。因此,當(dāng)運(yùn)行調(diào)用方的執(zhí)行方法時(shí),它反過(guò)來(lái)會(huì)導(dǎo)致命令對(duì)象的執(zhí)行方法在接收方上運(yùn)行,從而完成必要的操作。
我們需要執(zhí)行的是;
接口命令
實(shí)現(xiàn)命令接口的類順序
類服務(wù)員(調(diào)用者)
A級(jí)廚師(接收器)
所以,編碼是這樣的:
廚師,接收者
命令,接口
命令,具體命令
服務(wù)員,調(diào)用者
您,客戶
如上所示,客戶下訂單并將接收者設(shè)置為廚師。訂單被發(fā)送給服務(wù)員,服務(wù)員將知道何時(shí)執(zhí)行訂單(即何時(shí)向廚師下達(dá)烹飪訂單)。當(dāng)調(diào)用程序被執(zhí)行時(shí),Orders的執(zhí)行方法在接收器上運(yùn)行(即,廚師被賦予烹飪意大利面?或烘烤蛋糕的命令?)。