允許乙個物件在內部改變它的狀態,並根據不同的狀態有不同的操作行為。
例如,水在固體、液體、氣體是三種狀態,但是展現在我們面前的確實不同的感覺。通過改變水的狀態,就可以更改它的展現方式。
應用場景
1 當乙個物件的行為,取決於它的狀態時
2 當類結構中存在大量的分支,並且每個分支內部的動作抽象相同,可以當做一種狀態來執行時。
context環境角色,裡面包含狀態物件
classstate狀態的抽象介面context
public
void
operation()
}
inte***ceconcretestate具體的狀態角色state
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 operationstate2 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...