設計模式系列之 狀態模式

2021-10-04 15:21:17 字數 2673 閱讀 5302

這種型別的設計模式屬於行為型模式,它他解決了方法的合理呼叫

狀態模式用於乙個事件或物件有很多狀態,狀態之間會互相轉換,對不同狀態有不同的行為的情況

狀態模式將不同的情況封裝為乙個類 這樣避免了if/else的多次呼叫 而且增加新的情況不改變原有**

這樣可以通過只一次判斷狀態就可以完成相應方法的呼叫

需要的成員 :

狀態類 :寫乙個狀態類的介面提供基本標準 讓不同狀態類實現介面 產生不同的狀態

活動類 :寫乙個活動類組合介面來通過判斷狀態呼叫不同行為

//狀態抽象類 (介面也行)

public

abstract

class

state

//表示可以**的狀態

public

class

canrafflestate

extends

state

@override

public

void

deductmoney()

@override

public

boolean

raffle()

else

}@override

public

void

dispenseprize()

}///不能**的狀態

public

class

norafflestate

extends

state

@override

public

void

deductmoney()

@override

public

boolean

raffle()

@override

public

void

dispenseprize()

}//發獎的狀態

public

class

dispensestate

extends

state

@override

public

void

deductmoney()

@override

public

boolean

raffle()

@override

public

void

dispenseprize()

else}}

//獎品發完的狀態

public

class

dispenseoutstate

extends

state

@override

public

void

deductmoney()

@override

public

boolean

raffle()

@override

public

void

dispenseprize()

}

//活動類

public

class

raffleactivity

public

void

debuctmoney()

public

void

raffle()

}public

intgetcount()

/***************下面getter/setter 不重要**********************************/

public state getstate()

public

void

setstate

(state state)

public

void

setcount

(int count)

public state getnorafflestate()

public

void

setnorafflestate

(state norafflestate)

public state getcanrafflestate()

public

void

setcanrafflestate

(state canrafflestate)

public state getdispensestate()

public

void

setdispensestate

(state dispensestate)

public state getdispensoutstate()

public

void

setdispensoutstate

(state dispensoutstate)

}

//使用者

public

class

user

}}

設計模式之狀態模式

一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...

設計模式之 狀態模式

gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...

設計模式之狀態模式

定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...