設計模式利劍20 狀態模式

2021-05-22 14:38:25 字數 531 閱讀 5120

定      義:當乙個物件內在狀態改變時允許其改變行文,這個物件看起來像改變了其類

優      點:

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

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

3、封裝性非常好

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

應用場景:

1、行為隨狀態改變而改變的場景

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

應用案例:

先來看看實際的狀態模式uml圖:

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

context:環境角色,環境角色有兩個不成文的約束,1、把狀態獨享宣告為靜態常量,有幾個狀態物件就宣告幾個靜態常量

2、環境角色具有狀態抽象角色定義的所有行為,具體執行使用委託方式

舉例子:日常常用的電梯,有很多狀態,並且每個狀態下都有不同的操作方法,那麼我們可以用狀態模式來進行設計

設計模式利劍12 策略模式

定 義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換 優 點 1 演算法可以自由切換 2 避免使用多重條件判斷 3 擴充套件性好 缺 點 1 策略類數量多 2 所有的策略類都需要對外暴露 使用場景 1 多個類只有在演算法或行為上稍有不同的場景 2 演算法需要自由切換的場景 3 需要...

設計模式利劍10 責任鏈模式

定 義 使多個物件都有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合,將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止 優 點 將請求和處理分開,請求者可以不知道是誰處理的,處理者不用知道請求的全貌,兩者解耦,提高了靈活性,責任鏈模式減低了請求 的傳送端和接收端之間的耦合,...

23種設計模式 狀態模式 20

在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和乙個行為隨著狀態物件改變而改變的 context 物件。介紹意圖 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。主要解決 物件...