狀態模式 狀態改變行為

2021-08-19 22:16:23 字數 833 閱讀 8743

what

普遍定義:當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來形式改變了其類

自己總結:物件的行為隨著狀態改變

when

那麼何時使用呢?這個根據定義就可知道,當物件的行為根據狀態變化,並且在執行時刻根據狀態變化,就考略用狀態模式.也可以說,當乙個物件的轉換條件過於複雜的時候,使用這個模式可以使邏輯簡化。

why為什麼使用呢?這個其實還是把變化的抽離出來,就是講不同行為的狀態分離出來

思考:1、this在裡面代表什麼

2、state是從什麼地方引用過來的

3、章台的該bain是hi怎樣引起行為的改變的

4、為什麼用context作為state抽象類方法裡的引數

demo

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace 狀態模式

abstract class state

class concretestatea : state

}class concretestateb : state

}class context

public void request()

public state state//可讀寫的狀態屬性, 用於讀取當前狀態和設定新狀態 為什麼新增這個?

行為型 狀態模式

定義 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類中,可以把複雜的判斷邏輯簡化。上下文環境 context 它定義了客戶程式需要的介面並維護乙個具體狀態角色的例...

狀態模式 行為型

3 相關模式 1 狀態模式和策略模式 這是兩個結構相同,功能各異的模式,具體的在策略模式裡面講過了,這裡就不再贅述。2 狀態模式和觀察者模式 這兩個模式乍一看,功能是很相似的,但是又有區別,可以組合使用。這兩個模式都是在狀態發生改變的時候觸發行為,只不過觀察者模式的行為是固定的,那就是通知所有的觀察...

狀態模式 行為型

3 相關模式 1 狀態模式和策略模式 這是兩個結構相同,功能各異的模式,具體的在策略模式裡面講過了,這裡就不再贅述。2 狀態模式和觀察者模式 這兩個模式乍一看,功能是很相似的,但是又有區別,可以組合使用。這兩個模式都是在狀態發生改變的時候觸發行為,只不過觀察者模式的行為是固定的,那就是通知所有的觀察...