設計模式 行為型 狀態模式

2021-10-25 15:16:17 字數 1531 閱讀 3248

設計模式行為型

1.觀察者模式

2.模板模式

3.策略模式

4.職責鏈模式

5.狀態模式

6.迭代器模式

7.訪問者模式

8.備忘錄模式

9.命令模式

10.直譯器模式

11.中介模式

對有狀態的物件,把複雜的「判斷邏輯」提取到不同的狀態物件中,允許狀態物件在其內部狀態發生改變時改變其行為。

環境類(context)角色:也稱為上下文,它定義了客戶端需要的介面,內部維護乙個當前狀態,並負責具體狀態的切換。

抽象狀態(state)角色:定義乙個介面,用以封裝環境物件中的特定狀態所對應的行為,可以有乙個或多個行為。

具體狀態(concrete state)角色:實現抽象狀態所對應的行為,並且在需要的情況下進行狀態切換。

狀態模式一般用來實現狀態機,而狀態機常用在遊戲、工作流引擎等系統開發中。不過,狀態機的實現方式有多種,除了狀態模式,比較常用的還有分支邏輯法和查表法。

假設商店設定了會員制,分為初級、中級、高階**,初始位初級會員,積分0到1000為初級,1000到3000為中級,3000及以上為高階會員,會員可以通過購買物品獲得積分,長時間沒有購買會減去一定的積分

狀態模式實現:

public inte***ce  state 

public class lowstate implements state

@override

public void obtain()

//公升級可以連續

if(context.getpoints()>=3000)

}@override

public void decrease()

}public class middlestate implements state

@override

public void obtain()

}@override

public void decrease()

}}public class highstate implements state

@override

public void obtain()

@override

public void decrease()

}}public class context

public state getstate()

public void setstate(state state)

public context()

//獲得了積分

public void obtain(int points)

//減少了積分

public void decrease(int points)

}

狀態模式會引入非常多的狀態類,會導致**比較難維護。相反,像電商下單、外賣下單這種型別的狀態機,它們的狀態並不多,狀態轉移也比較簡單,但事件觸發執行的動作包含的業務邏輯可能會比較複雜,所以,更加推薦使用狀態模式來實現。

Java設計模式 行為型 狀態模式

身為億億萬萬勞苦大眾的一員,每天可以做的基本上就兩件事,一件就是太累休息一會,另一件就是為了養家拼命的工作。什麼情況下應當休息,什麼情況下應當工作。答案很簡單,要看上班還是下班了。千千萬的勞苦大眾 public class person 應當休息還是工作,看下現在的狀態 public void re...

設計模式之狀態模式 行為型

乙個物件在其內部狀態改變時改變其行為,這個物件我們可以稱為狀態物件,所以狀態模式是一種物件行為型模式。上下文類 public class context public void setstate state state public state getstate 抽象狀態類 public abstr...

設計模式 行為型設計模式 5 狀態模式(php)

行為型設計模式 狀態模式 狀態模式 state pattern 屬於行為型模式之一,它允許乙個物件在其內部狀態發生改變時而改變它的行為,看起來像修改了它的類。1 context環境類角色 定義了客戶感興趣的訪問介面 維護concretestate子類的例項 並且定義當前相關的狀態 2 抽象狀態類角色...