設計模式-狀態模式
阿新 • • 發佈:2020-10-16
我們還是通過一個案例來引出狀態模式
案例:
APP 抽獎活動問題 請編寫程式完成 APP 抽獎活動 具 體要求如下:- 1) 假如每參加一次這個活動要 扣除使用者50積分,中獎概率 是10%
- 2) 獎品數量固定,抽完就不能 抽獎
- 3) 活動有四個狀態: 可以抽獎、 不能抽獎、發放獎品和獎品 領完
- 4) 活動的四個狀態轉換關係圖 (下圖)
3)UML原理圖
對原理類圖的說明-即(狀態模式的角色及職責) 1) Context 類為環境角色, 用於維護State例項,這個例項定義當前狀態 2) AbstractStatus是抽象狀態角色,定義一個介面封裝與Context 的一個特點介面相關行為 3) Status1, Status2具體的狀態角色,每個子類實現一個與Context 的一個狀態相關行為這個就是狀態模式,就是用來 記錄狀態的變化並讓物件根據不同的狀態,產生不同的行為的,這個案例 根據這個 原理類圖套一套就可以了,是不是非常的容易。
狀態模式的注意事項和細節 1) 程式碼有很強的可讀性。狀態模式將每個狀態的行為封裝到對應的一個類中