Java大話設計模式學習總結(十六) 狀態模式

2021-09-23 23:58:18 字數 1657 閱讀 8646

狀態模式(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總結)

在開發過程中,我們會遇到要將某乙個功能賦予額外的職責,並把這些增加了額外職責的功能按照正確的順序串聯起來進行控制,且可以靈活地調換這些順序,輸出最後執行的結果,裝飾模式就是這樣乙個非常有意思的設計模式。衣服 鞋子 領帶 披風都可以理解為對人的裝飾。而且可以選擇先穿衣服再穿鞋子,或者先穿鞋子,再穿衣服...