設計模式 狀態模式

2021-09-08 21:43:33 字數 2756 閱讀 7544

狀態模式(state)允許乙個物件在其內部狀態改變的時候改變行為。結構圖為:

汽車有不同的檔速,當行車時,經常需要換檔,換檔是從低到高,換檔的過程就是狀態的改變過程。

實現**:

//car.h

class

state;

class

car  

;#include 

"stdafx.h

"#include 

"car.h

"#include 

"state.h

"#include 

<

iostream

>

using

namespace

std;

car::car(state

*pstate)

car::

~car()

void

car::setstate(state

*pstate)

void

car::pull()

// state.h

#include 

<

iostream

>

#include 

"car.h

"class

state  ;//

state.cpp

#include 

"stdafx.h

"#include 

"state.h

"using

namespace

std;

state::state(

char

*pname)

state::

~state()

ostream

&operator

<<

(ostream

&os, state

&state)

// off.h

#include 

"state.h

"class

off : 

public

state;//

off.cpp

#include 

"stdafx.h

"#include 

"off.h

"#include 

"low.h

"#include 

<

iostream

>

using

namespace

std;

off::off() : state("空檔

")

off::

~off()

void

off::changestate(car

*pcar)

// low.h

#include 

"state.h

"class

low : 

public

state;//

low.cpp

#include 

"stdafx.h

"#include 

"low.h

"#include 

"medium.h

"low::low() : state("低檔

")

low::

~low()

void

low::changestate(car

*pcar)

// medium.h

#include 

"state.h

"class

medium : 

public

state;//

medium.cpp

#include 

"stdafx.h

"#include 

"medium.h

"#include 

"high.h

"medium::medium() : state("中檔

")

medium::

~medium()

void

medium::changestate(car

*pcar)

// high.h

#include 

"state.h

"class

high : 

public

state;//

high.cpp

#include 

"stdafx.h

"#include 

"high.h

"#include 

"off.h

"high::high() : state("高檔

")

high::

~high()

void

high::changestate(car

*pcar)

// main.cpp

#include 

"stdafx.h

"#include 

"car.h

"#include 

"off.h

"int

main(

intargc, 

char

*ar**)

最後輸出:

當前檔位:空檔

掛新檔,當前檔位:低檔

掛新檔,當前檔位:中檔

掛新檔,當前檔位:高檔

掛新檔,當前檔位:空檔

設計模式 狀態模式

狀態模式 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。狀態模式主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況,把狀態的判斷邏輯轉移到表示不同狀態的一些列類當中,可以把複雜的判斷邏輯簡化。當乙個物件的行為取決於它的狀態,並且它必須在執行時刻根據狀態改變它的行...

設計模式 狀態模式

1.概述 當乙個物件的內在狀態改變時允許改變其行為,這個物件看起來像是改變了其類。2.解決的問題 主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。3.模式中的角色 3.1 上下文環境 context 它定義了客...

設計模式 狀態模式

描述 允許物件在內部狀態改變時改變它的行為,物件看起來好像修改了它的類。主要解決的是當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同的一系列類當中,可以把複雜的邏輯判斷簡單化。通常應用在有好多狀態的流程中。類圖 以下程式模擬糖果機器投幣取糖果的狀態流程。1.定義狀態...