設計模式(二十) 狀態模式

2021-10-06 20:07:52 字數 1845 閱讀 3504

一、例:工作狀態

class

work

public

void

sethour

(int hour)

public

boolean

isworkfinished()

public

void

setworkfinished

(boolean workfinished)

public

void

writeprogram()

else

if(hour <13)

else

if(hour <17)

else

if(hour <21)

else}}

}public

class

states

}

二、狀態模式

狀態模式,當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。

abstract

class

state

class

concretestatea

extends

state

}class

concretestateb

extends

state

}class

context

public state getstate()

public

void

setstate

(state state)

public

void

request()

}public

class

states

}

工作狀態:狀態模式改進

abstract

class

state

class

forenoonstate

extends

state

else}}

class

noonstate

extends

state

else}}

class

afternoonstate

extends

state

else}}

class

eveningstate

extends

state

else

else}}

}class

sleepingstate

extends

state

}class

reststate

extends

state

}class

work

public

double

gethour()

public

void

sethour

(double hour)

public

boolean

isfinish()

public

void

setfinish

(boolean finish)

public

void

setstate

(state s)

public

void

writeprogram()

}public

class

states

}

設計模式(二十)狀態模式

在狀態模式 state pattern 中,類的行為是基於它的狀態改變的。這種型別的設計模式屬於行為型模式。在狀態模式中,我們建立表示各種狀態的物件和乙個行為隨著狀態物件改變而改變的 context 物件。意圖 允許物件在內部狀態發生改變時改變它的行為,物件看起來好像修改了它的類。何時使用 中包含大...

設計模式(二十一) 狀態模式

狀態模式也是一種行為型模式,當我們的程式中需要一些狀態轉換,對於不同的狀態需要不同的行為時,我們就可以考慮使用狀態模式。下面用交通燈來當例子。我們需要紅黃綠三種顏色的狀態。inte ce state class redstate implements state class yellowstate ...

狀態模式 java設計模式(二十二)

共享狀態 優缺點和適用範圍 jdk中的應用 狀態模式 state pattern 允許乙個物件在內部狀態改變時改變行為,看起來似乎修改了類。狀態模式結構。狀態轉換可以由環境類統一負責。新增具體狀態需要修改環境類。public void changestate else if value 1 publ...