學習設計模式的日常demo狀態模式基本介紹
狀態模式原理類圖
狀態模式案例
**實現:
*
** 抽象狀態類
*@author administrator **
/public
abstract
class
state
/** * **活動
* * @author administrator
*/public
class
raffleactivity
// 扣除獎券
public
void
debuctmoney()
// **
public
void
raffle()
}public state getstate()
public
void
setstate
(state state)
// 每領取一次獎品,其數量要減少
public
intgetcount()
public
void
setcount
(int count)
public state getnoraffllestate()
public
void
setnoraffllestate
(state noraffllestate)
public state getcanrafflestate()
public
void
setcanrafflestate
(state canrafflestate)
public state getdispensestate()
public
void
setdispensestate
(state dispensestate)
public state getdispensoutstate()
public
void
setdispensoutstate
(state dispensoutstate)
}// 抽象狀態類的具體子類
/** * 不能**的狀態
* @author administrator
* */
public
class
norafflestate
extends
state
// 當前狀態可以扣獎券,扣除後,將狀態設定為可以**
@override
public
void
deductmoney()
// 當前狀態不能**
@override
public
boolean
raffle()
// 當前狀態不能發放獎品
@override
public
void
dispenseprize()
}/**
* 可以**的狀態
* * @author administrator
*/public
class
canrafflestate
extends
state
// 獎券已經支付
@override
public
void
deductmoney()
// 可以**,根據**結果改變狀態
@override
public
boolean
raffle()
else
}// 不能發放獎品
@override
public
void
dispenseprize()
}/**
* 發放獎品狀態
* @author administrator
* */
public
class
dispensestate
extends
state
//@override
public
void
deductmoney()
@override
public
boolean
raffle()
// 發放獎品
@override
public
void
dispenseprize()
else}}
/** * 不能**的狀態
* @author administrator
* */
public
class
norafflestate
extends
state
// 當前狀態可以扣獎券,扣除後,將狀態設定為可以**
@override
public
void
deductmoney()
// 當前狀態不能**
@override
public
boolean
raffle()
// 當前狀態不能發放獎品
@override
public
void
dispenseprize()
}/**
* 獎品發放完狀態
* 當成為該狀態,則活動結束
* @author administrator
* */
public
class
dispenseoutstate
extends
state
@override
public
void
deductmoney()
@override
public
boolean
raffle()
@override
public
void
dispenseprize()
}// 測試類
狀態模式注意事項和細節說明
github:設計模式源**
設計模式之狀態模式
一 作用 允許乙個物件在其內部狀態改變時改變它的行為,物件看起來似乎修改了它的類。其別名為狀態物件 objects for states 狀態模式是一種物件行為型模式。二 例子 狀態抽象類 abstract class state 具體狀態類,每個狀態對應乙個類 class concretestat...
設計模式之 狀態模式
gof 設計模式 中給狀態模式下的定義為 允許乙個物件在其內部狀態改變時改變它 的行為。這個物件看起來似乎修改了它的類。看起來,狀態模式好像是神通廣大 居然能夠 修改自身的類 能夠讓程式根據不同的外部情況來做出不同的響應,最直接的方法就是在程式中將這些可能發生的外部情況全部考慮到,使用 if els...
設計模式之狀態模式
定義 允許乙個物件在其內部狀態變化時改變它的行為,物件看起來似乎修改了它所屬的類。類圖 說明 context表示環境類,它定義了客戶應用程式感興趣的介面,並維護乙個concretestate子類的例項,這個例項用於定義當前狀態 state表示抽象狀態類,它定義了乙個介面以封裝與context的乙個特...