文章屬于轉(zhuǎn)載
命令模式也是開發(fā)中常見的一個(gè)模式,也不是太難,比較簡(jiǎn)單,下面來(lái)詳細(xì)的寫一下命令模式。
估計(jì)有些朋友看到這個(gè)標(biāo)題會(huì)非常奇怪,電腦裝配好了,如何開機(jī)?不就是按下啟動(dòng)按鈕就可以了嗎?難道還有什么玄機(jī)不成。
對(duì)于使用電腦的客戶——就是我們來(lái)說(shuō),開機(jī)確實(shí)很簡(jiǎn)單,按下啟動(dòng)按鈕,然后耐心等待就可以了。但是當(dāng)我們按下啟動(dòng)按鈕過(guò)后呢?誰(shuí)來(lái)處理?如何處理?都經(jīng)歷了怎樣的過(guò)程,才讓電腦真正的啟動(dòng)起來(lái),供我們使用。
先一起來(lái)簡(jiǎn)單的認(rèn)識(shí)一下電腦的啟動(dòng)過(guò)程,了解一下即可。
講了一通電腦啟動(dòng)的過(guò)程,有些朋友會(huì)想,這與我何干呢?
沒錯(cuò),看起來(lái)這些硬件知識(shí)跟你沒有什么大的關(guān)系,但是,如果現(xiàn)在提出一個(gè)要求:請(qǐng)你用軟件把上面的過(guò)程表現(xiàn)出來(lái),你該如何實(shí)現(xiàn)?
首先把上面的過(guò)程總結(jié)一下,主要就這么幾個(gè)步驟:首先加載電源,然后是設(shè)備檢查,再然后是裝載系統(tǒng),最后電腦就正常啟動(dòng)了。可是誰(shuí)來(lái)完成這些過(guò)程?如何完成?
不能讓使用電腦的客戶——就是我們來(lái)做這些工作吧,真正完成這些工作的是主板,那么客戶和主板如何發(fā)生聯(lián)系呢?現(xiàn)實(shí)中,是用連接線把按鈕連接到主板上的,這樣當(dāng)客戶按下按鈕的時(shí)候,就相當(dāng)于發(fā)命令給主板,讓主板去完成后續(xù)的工作。
另外,從客戶的角度來(lái)看,開機(jī)就是按下按鈕,不管什么樣的主板都是一樣的,也就是說(shuō),客戶只管發(fā)出命令,誰(shuí)接收命令,誰(shuí)實(shí)現(xiàn)命令,如何實(shí)現(xiàn),客戶是不關(guān)心的。
把上面的問(wèn)題抽象描述一下:客戶端只是想要發(fā)出命令或者請(qǐng)求,不關(guān)心請(qǐng)求的真正接收者是誰(shuí),也不關(guān)心具體如何實(shí)現(xiàn),而且同一個(gè)請(qǐng)求的動(dòng)作可以有不同的請(qǐng)求內(nèi)容,當(dāng)然具體的處理功能也不一樣,請(qǐng)問(wèn)該怎么實(shí)現(xiàn)?
用來(lái)解決上述問(wèn)題的一個(gè)合理的解決方案就是命令模式。那么什么是命令模式呢?
(1)命令模式定義
將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或記錄請(qǐng)求日志,以及支持可撤銷的操作。
(2)應(yīng)用命令模式來(lái)解決的思路
首先來(lái)看看實(shí)際電腦的解決方案
先畫個(gè)圖來(lái)描述一下,看看實(shí)際的電腦是如何處理上面描述的這個(gè)問(wèn)題的,如圖1所示: