文章屬于轉載
命令模式也是開發中常見的一個模式,也不是太難,比較簡單,下面來詳細的寫一下命令模式。
命令模式(Command)
1 場景問題
1.1 如何開機
估計有些朋友看到這個標題會非常奇怪,電腦裝配好了,如何開機?不就是按下啟動按鈕就可以了嗎?難道還有什么玄機不成。
對于使用電腦的客戶——就是我們來說,開機確實很簡單,按下啟動按鈕,然后耐心等待就可以了。但是當我們按下啟動按鈕過后呢?誰來處理?如何處理?都經歷了怎樣的過程,才讓電腦真正的啟動起來,供我們使用。
先一起來簡單的認識一下電腦的啟動過程,了解一下即可。
- 當我們按下啟動按鈕,電源開始向主板和其它設備供電
- 主板的系統BIOS(基本輸入輸出系統)開始加電后自檢
- 主板的BIOS會依次去尋找顯卡等其它設備的BIOS,并讓它們自檢或者初始化
- 開始檢測CPU、內存、硬盤、光驅、串口、并口、軟驅、即插即用設備等等
- BIOS更新ESCD(擴展系統配置數據),ESCD是BIOS和操作系統交換硬件配置數據的一種手段
- 等前面的事情都完成后,BIOS才按照用戶的配置進行系統引導,進入操作系統里面,等到操作系統裝載并初始化完畢,就出現我們熟悉的系統登錄界面了。
1.2 與我何干
講了一通電腦啟動的過程,有些朋友會想,這與我何干呢?
沒錯,看起來這些硬件知識跟你沒有什么大的關系,但是,如果現在提出一個要求:請你用軟件把上面的過程表現出來,你該如何實現?
首先把上面的過程總結一下,主要就這么幾個步驟:首先加載電源,然后是設備檢查,再然后是裝載系統,最后電腦就正常啟動了。可是誰來完成這些過程?如何完成?
不能讓使用電腦的客戶——就是我們來做這些工作吧,真正完成這些工作的是主板,那么客戶和主板如何發生聯系呢?現實中,是用連接線把按鈕連接到主板上的,這樣當客戶按下按鈕的時候,就相當于發命令給主板,讓主板去完成后續的工作。
另外,從客戶的角度來看,開機就是按下按鈕,不管什么樣的主板都是一樣的,也就是說,客戶只管發出命令,誰接收命令,誰實現命令,如何實現,客戶是不關心的。
1.3 有何問題
把上面的問題抽象描述一下:客戶端只是想要發出命令或者請求,不關心請求的真正接收者是誰,也不關心具體如何實現,而且同一個請求的動作可以有不同的請求內容,當然具體的處理功能也不一樣,請問該怎么實現?
2 解決方案
2.1 命令模式來解決
用來解決上述問題的一個合理的解決方案就是命令模式。那么什么是命令模式呢?
(1)命令模式定義
將一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數化;對請求排隊或記錄請求日志,以及支持可撤銷的操作。
(2)應用命令模式來解決的思路
首先來看看實際電腦的解決方案
先畫個圖來描述一下,看看實際的電腦是如何處理上面描述的這個問題的,如圖1所示:

posted @
2011-06-09 13:16 貝貝 閱讀(96) |
評論 (0) |
編輯 收藏