設計模式(6)狀態模式--行爲型

定義

允許對象在內部狀態改變時改變它的行爲,對象看起來好像修改了它的類。

角色

Context: 環境類。可以包括一些內部狀態。
State: 抽象狀態類。State定義了一個所有具體狀態的共同接口,任何狀態都實現這個相同的接口,這樣一來,狀態之間就可以互相轉換了。
ConcreteState: 具體狀態類。具體狀態類,用於處理來自Context的請求,每一個ConcreteState都提供了它對自己請求的實現,所以,當Context改變狀態時行爲也會跟着改變

適用場景

1、對象的行爲依賴於它的狀態(屬性)並且可以根據它的狀態改變而改變它的相關行爲。
2、代碼中包含大量與對象狀態有關的條件語句

類圖

這裏寫圖片描述

示例

糖果機的處理

引申

模板方法模式:有子類決定如何實現算法中的某些步驟
狀態模式:封裝基於狀態的行爲,並將行爲委託到當前狀態
策略模式:將可以互換的行爲封裝其來,然後使用委託的方法,決定使用哪一個行爲

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章