設計模式 狀態模式State

2021-09-22 13:15:57 字數 1226 閱讀 1153

允許乙個物件在內部改變它的狀態,並根據不同的狀態有不同的操作行為。

例如,水在固體、液體、氣體是三種狀態,但是展現在我們面前的確實不同的感覺。通過改變水的狀態,就可以更改它的展現方式。

應用場景

1 當乙個物件的行為,取決於它的狀態時

2 當類結構中存在大量的分支,並且每個分支內部的動作抽象相同,可以當做一種狀態來執行時。

context環境角色,裡面包含狀態物件

class

context

public

void

operation()

}

state狀態的抽象介面

inte***ce

state

concretestate具體的狀態角色

class

concretestate1 implements state

}class

concretestate2 implements state

}class

concretestate3 implements state

}

全部**

1

package com.xingoo.test.design.state;

2class

context

7public

void

operation()10}

11inte***ce

state

14class

concretestate1 implements state18}

19class

concretestate2 implements state23}

24class

concretestate3 implements state28}

29public

class

client

45 }

執行結果

state1 operation

state2 operation

state3 operation

設計模式 狀態模式(State)

核心思想就是 當物件的狀態改變時,同時改變其行為。所以,狀態模式就兩點 1 可以通過改變狀態來獲得不同的行為。2 你的好友能同時看到你的變化。state類是個狀態類 這裡用dispenserstate 及實現類 public inte ce dispenserstate public class f...

設計模式 狀態模式(State)

一 狀態模式 state 定義 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類 理解 狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中,可以把複雜的判斷邏輯簡化。二 狀態模式uml圖 3 context ...

設計模式 狀態模式 State

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新 乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行為 乙個操作中含有龐大的多分支的條件語句,且這些分支依賴於該物件的狀態 public inte ce weather publi...