狀態模式(state),當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。
狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列當中,可以把複雜的判斷邏輯簡化。當然,如果這個狀態判斷很簡單,那就沒必要使用「狀態模式」了。
舉例:在公司工作工作一天,每個階段的工作狀態都不同,比如上午會比較精神,中午困了需要休息,下午休息完後又有精神了,但是到了晚上如果加班很晚,就會很累,加班到凌晨可能就會在單位休息了。由於判斷比較多,就可以用狀態模式來實現。
工作類
public
class
work
public
void
getworkstate()
public state getstate()
public
void
setstate
(state state)
public
intgethour()
public
void
sethour
(int hour)
public
boolean
isworkfinished()
public
void
setworkfinished
(boolean workfinished)
}
工作狀態抽象類
public
abstract
class
state
工作狀態子類
// 早上
public
class
morningworkstate
extends
state
else}}
// 中午
public
class
noonworkstate
extends
state
else}}
// 下午
public
class
afternoonworkstate
extends
state
else}}
// 晚上
public
class
eveningworkstate
extends
state
else
else}}
}// 夜晚
public
class
nightworkstate
extends
state
}// 工作完,休息
public
class
restworkstate
extends
state
}
主程式
public
class
test
}執行結果
《大話設計模式》學習總結
單一職責原則就是乙個類只負責做一件事件,只有乙個功能。比較於功能比較多的類,面對功能實現修改的時候,只需要修改乙個類,而不會對其他的功能造成影響。比如說介面顯示和遊戲邏輯分開,只要不該介面,介面與邏輯的具體實現都可以單獨修改而不會對彼此造成影響。開放封閉原則指的是,應對需求變更,對修改是封閉,對增加...
大話設計模式學習(十) 建造者模式
建造者模式 將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式主要用於建立一些複雜的物件,這些物件內部構建之間的建造順序通常是穩定的,但物件內部的建構通常面臨著複雜的物件,它的好處在於使得建造 和表示 分離,由於建造者隱藏了該產品是如何組裝的,所以若需要改變乙個產品...
大話設計模式之裝飾模式(Java總結)
在開發過程中,我們會遇到要將某乙個功能賦予額外的職責,並把這些增加了額外職責的功能按照正確的順序串聯起來進行控制,且可以靈活地調換這些順序,輸出最後執行的結果,裝飾模式就是這樣乙個非常有意思的設計模式。衣服 鞋子 領帶 披風都可以理解為對人的裝飾。而且可以選擇先穿衣服再穿鞋子,或者先穿鞋子,再穿衣服...