設計模式之狀態模式

2021-07-31 15:19:34 字數 1984 閱讀 1487

概述:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新

角色:

實現:

狀態介面:

inte***ce state
狀態的三個實現

/**

* 空閒狀態

* 能預定

*/public

class

freetimestate

implements

state

@override

public

void

bookroom()

@override

public

void

checkinroom()

@override

public

void

checkoutroom()

}

/**

* 預定狀態

* 能入住

*/public

class

bookedstate

implements

state

@override

public

void

bookroom()

@override

public

void

checkinroom()

@override

public

void

checkoutroom()

}

/**

* 入住狀態

* 能退房

*/public

class

checkinstate

implements

state

@override

public

void

bookroom()

@override

public

void

checkinroom()

@override

public

void

checkoutroom()

}

房間:

ublic class room 

/*** 預定

*/public

void

bookroom()

/*** 入住

*/public

void

checkinroom()

/*** 退房

*/public

void

checkoutroom()

public state getstate()

public

void

setstate(state state)

public state getfreetimestate()

public

void

setfreetimestate(state freetimestate)

public state getbookeddstate()

public

void

setbookeddstate(state bookeddstate)

public state getcheckinstate()

public

void

setcheckinstate(state checkinstate)

}

測試:

public

class teststate

}

列印:

現在是空閒狀態,我預定了

現在是預定狀態,我入住了

現在是入住昨狀態,我退房了

設計模式之狀態模式

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

設計模式之 狀態模式

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

設計模式之狀態模式

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