當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。
角色說明:
繼續以舉追妹紙為例,單身狗狀態下與戀愛狀態下的行為是不一致的。
定義公共介面,比如定義乙個人的行為有看電影和逛街:
public inte***ce personstate
實現抽象狀態類的介面,比如人有單身狗和戀愛這兩種狀態:
public class dogstate implements personstate
@override
public void shopping()
}public class lovestate implements personstate
@override
public void shopping()
}
定義客戶端需要的介面,以及負責狀態的切換:
public class context
public void fallinlove()
system.out.println("失戀了,變成單身狗狀態:");
setpersonstate(new dogstate());
}public void movies()
public void shopping()
}
public void test()
輸出結果:
戀愛了,陷入熱戀狀態:
一起愉快的逛街去~
一起上電影院看大片~
失戀了,變成單身狗狀態:
乙個人偷偷看島國大片
行為型模式 狀態模式
是乙個用來對狀態轉換進行建模的工具,是乙個抽象的機器。有著兩個非常關鍵的部分,狀態和轉換。狀態是指系統當前的狀態。轉換是指從乙個狀態切換到另乙個狀態,因某乙個事件或者條件的觸發而開始。通常,在一次轉換發生之前或者之後,會執行一組動作。我們經常使用狀態圖來表示狀態機。其中,每乙個狀態是乙個節點,每一次...
行為型模式 狀態模式
在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和乙個行為隨著狀態物件改變而改變的 context 物件。意圖 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。主要解決 物件的行...
Java設計模式之行為型模式(狀態模式)
狀態模式允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。uml圖 已經上了注釋,很簡單,大家領會一下狀態模式的思想。author hanlin wang public class statemode 定義狀態類 class state public string getval...