程序員必備設計模式之命令模式

今天我們再來講一個設計模式,命令模式。這個模式,相信各位程序員朋友都曾經使用過,只是你還有可能沒有理解它的核心思想。

這幾年隨着物聯網越來越發達,這種場景越來越常見了,我們可以通過語音來控制全家的家電,小米、華爲、阿里跟百度,都是在這方面做的比較好的,通過一個智能音箱或者智能手機,可以隨便打開電視,開關空調等等。那麼,你有沒有想過這麼一個問題,爲什麼這些物聯網的智慧中心知道如何去關閉你家的智能設備呢?在代碼上應該是什麼樣的架構,如何進行設計呢?

我們我們知道,市面上的智能設備非常多,廠商也非常多,每個廠商可能的標準都不一樣,如果我們來開發一個物聯網智慧中心,我們不可能去學習所有廠商的API接口,學習他們的代碼,一來成本非常地高,二來實現起來非常的複雜,即使是同一個廠商,可能不同的設備都有不同的邏輯,開發成本巨大。

這個時候就要祭出我們的設計模式了,命令模式。命令模式是一種數據驅動的設計模式,它屬於行爲型模式。它將請求封裝成對象,執行者不用關心裏面的具體實現邏輯,只要進行執行就可以了。在現在的物聯網開放平臺上,也是這麼實現的,廠商去對應的開放平臺上,申請一個命令,編寫相應的代碼,至於物聯網智慧中心,它並不關心具體的代碼實現,只知道你家的智能空調綁定了這個命令,直接使用這個命令即可。

可能到這裏你還有點懵,這講得都是什麼玩意。我們再通過一個耳熟能詳的例子。相信大家都有使用過線程池的使用經驗。無論是JAVA也好,C++也好,大多數的線程池都是這樣使用的。你創建一個類,去實現某一個接口,例如Java中的Runnable。然後你就可以將這個類放入線程池的隊列當中了。

這實際上就是一個典型的命令模式,對於線程池來說,只關心線程的調度,隊列的大小,線程數量這些,不用關心具體舉行的任務,只知道調用對應的執行方法即可。對於命令本身,只關心自身的邏輯,不用關心線程如何調度。這就非常好的將命令的請求者與命令的執行者進行解耦了!

歡迎關注公衆號:“趣學Web前端”,獲取更多前端知識精粹和學習社羣: 回覆 學習路徑,將獲取筆者多年從業經驗的前端學習路徑的思維導圖 Vue、React、小程序、Node

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章