C 狀態模式(State)

2022-02-23 05:28:56 字數 1012 閱讀 4732

理解:當物件有多個狀態時,把每個狀態的行為寫到各自的狀態類裡面去,當切換狀態時,呼叫的行為也就自動切換了。 和策略模式很像,不過策略是針對外部的,而狀態是針對內部的

**:using

system.windows.forms;

namespace designmode.state

set 

}private operatingsystem _os;

public operatingsystem os

set 

}public computer(operatingsystem os)

public

void run()}//

抽象的物件狀態類

public

abstract

class operatingsystem

public

class vista : operatingsystem

else

if (computer.request.equals("

l"))

}public

override

void run()

}public

class windows : operatingsystem

else

if (computer.request.equals("

l"))

}public

override

void run()

}public

class linux : operatingsystem

else

if (computer.request.equals("

v"))

}public

override

void run()}}

客戶端**:

private

void

btn_state_click(

object

sender, eventargs e)

C 設計模式 狀態(State)

允許乙個物件在其內部狀態改變時改變它的行為。主要組成 context 環境,上下文,客戶主要使用該類 state 狀態父類或介面 concretestate 具體狀態 using system namespace state public void changestate state state p...

C 設計模式 state 狀態模式

head first 設計模式 中的樣例非常不錯,想製造乙個自己主動交易的糖果機,糖果機有四個狀態 投入錢不足,投入錢足夠,糖果,糖果售罄。糖果機的當前狀態處於當中不同的狀態時,它針對同乙個操作的反映動作也不同。傳統面向過程程式設計會套用if else對不同的狀態下分別處理,邏輯麻煩並且不具有可拓展...

C 設計模式 狀態模式(State)

允許乙個物件在其內部狀態改變時改變它的行為。從而使物件看起來似乎修改了其行為。23種設計模式不比太過於計較它們之間的差異,而更關注他們到底解決的是什麼樣的乙個穩定點和變化點的關係問題。這個時候呢模式之間的關係也理順了,學習模式一那麼生搬硬套,它無非是設計上的演化而已,是一種松耦合設計的原則演化而已。...