天天看點

設計模式利劍20--狀态模式

定      義:當一個對象内在狀态改變時允許其改變行文,這個對象看起來像改變了其類

優      點:

              1、結構清晰,避免了過多的switch case,if else

              2、遵循設計原則,每個狀态都是一個子類

              3、封裝性非常好

缺      點:子類會過多,也就是類膨脹

應用場景:

            1、行為随狀态改變而改變的場景

            2、條件、分支判斷語句的替代者

應用案例:

           先來看看實際的狀态模式UML圖:

           Status:抽象狀态角色,接口或抽象類,負責對象狀态定義,并且封裝環境角色以實作狀态切換

             ConcreteState:具體狀态角色,每一個具體狀态必須完成兩個職責,本狀态的行為管理以及趨向狀态處理,通俗的說就是本狀态下要做的事情以及本狀态如何過渡到其他狀态

             Context:環境角色,環境角色有兩個不成文的限制,1、把狀态獨享聲明為靜态常量,有幾個狀态對象就聲明幾個靜态常量

繼續閱讀