理解:當物件有多個狀態時,把每個狀態的行為寫到各自的狀態類裡面去,當切換狀態時,呼叫的行為也就自動切換了。 和策略模式很像,不過策略是針對外部的,而狀態是針對內部的
**: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種設計模式不比太過於計較它們之間的差異,而更關注他們到底解決的是什麼樣的乙個穩定點和變化點的關係問題。這個時候呢模式之間的關係也理順了,學習模式一那麼生搬硬套,它無非是設計上的演化而已,是一種松耦合設計的原則演化而已。...