你有沒有注意到,有些應用程式的行為會根據不同的狀態而有所不同?當你使用音樂播放器時,按下「播放」按鈕,播放器會開始播放音樂;當音樂處於暫停狀態時,按下同一個按鈕卻是繼續播放,而不是重頭播放。這就是狀態模式的典型應用。每一個狀態都對應著不同的行為,而這些行為隨著狀態的變化而變化。
什麼是狀態模式?
狀態模式是一種設計模式,讓物件根據內部狀態改變行為。簡單來說物件的動作不再依賴外部邏輯,而是由它當下的狀態決定。這不僅讓程式更容易維護,還可以避免大量的條件判斷,讓程式碼看起來更清楚明瞭。
音樂播放器的例子
想像一個音樂播放器,它可能有「播放」、「暫停」、「停止」這三種狀態。當播放器處於「播放」狀態時,按下「播放」按鈕是沒有反應的,因為它已經在播放了;但是在「暫停」狀態下,按下同樣的按鈕則會恢復播放。這樣的設計能讓程式碼變得更簡潔,因為每個狀態只處理自己該做的事情。
狀態模式的好處
狀態模式的優勢就是靈活性和易於維護。如果你想新增一個新功能,比如說「快轉」,你只需要新增一個新的狀態,而不必修改整個播放器的核心邏輯。另外它還能讓程式更加清晰,因為不同的狀態分別處理自己的行為,讓程式碼不會被各種條件判斷搞得一團亂。
總結一下,狀態模式讓我們能夠將一個系統的行為和狀態分離開來,當狀態變化時,自然就會有不同的行為反應,這樣的設計讓程式更容易維護,也更具彈性。
若想了解設計模式的真實應用,歡迎參考我今年在iThome鐵人賽的文章。
https://ithelp.ithome.com.tw/articles/10348440