更新於 2024/09/02閱讀時間約 2 分鐘

設計模式入門:命令模式 Command Pattern

    想像你正坐在一間高級餐廳裡。你不會直接走進廚房告訴廚師你想吃什麼,而是向服務生點餐。服務生記下你的要求,然後傳達給廚房。這個看似簡單的過程,其實蘊含了一個軟體設計概念,那就是命令模式 Command Pattern。今天就來聊聊這個能讓程式碼更具彈性的設計模式。 什麼是命令模式? 命令模式是一種行為設計模式,它將一個請求封裝成一個物件,這樣你可以將不同的請求用相同的方式處理。簡單來說它就像餐廳裡的點菜單,將「做什麼」與「誰來做」分離開來。 在軟體設計中,這讓我們能夠把某個操作(比如打開電燈)封裝成一個物件。這個物件包含了執行這個操作所需的所有資訊。這樣即使你不知道操作的具體內容或是接收者,你也可以執行這個操作,或者交給其他程式碼來執行。 命令模式在智慧家庭中的應用 假設你有一個智慧家庭系統,可以控制家中的各種設備,比如燈光、空調、音響等。當你想要打開燈光時,你不會直接呼叫燈光的操作介面,而是透過智慧家庭系統發出一個命令來控制燈光的開關。這就是命令模式的典型應用。 這種設計讓你可以輕鬆擴展新的設備和命令,無需修改現有的程式碼。無論是打開燈光、調節空調溫度,還是播放音樂,都可以通過這樣的命令模式來實現。 命令模式的優缺點 命令模式的優點在於它將請求的發送者和接收者解耦,讓系統更加靈活。就像在智慧家庭中,你不需要知道哪個裝置在執行命令,只需發出相應的命令即可。這樣的設計讓你可以輕鬆新增新的命令,而無需修改現有的程式碼。 命令模式也有缺點。每個具體命令都被封裝成一個單獨的類別,這可能導致系統中的類別數量暴增,使得系統變得更加複雜。另外當命令中包含大量業務邏輯時,命令類別可能會變得臃腫,違反單一職責原則。 總結一下,命令模式是一個強大且靈活的設計模式,能夠讓程式設計更具組織性和可擴展性。雖然它可能會引入一些額外的複雜度,但在許多情境下,它所帶來的好處遠遠超過其缺點。不管是智慧家庭、遊戲開發,還是企業級應用,命令模式的應用無處不在。 有興趣深入體會設計模式的朋友,可以參考我今年在iThome鐵人賽的文章。 https://ithelp.ithome.com.tw/articles/10347404

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.