允許乙個物件在其內部狀態改變時改變它的行為。從而使物件看起來似乎修改了其行為。
23種設計模式不比太過於計較它們之間的差異,而更關注他們到底解決的是什麼樣的乙個穩定點和變化點的關係問題。這個時候呢模式之間的關係也理順了,學習模式一那麼生搬硬套,它無非是設計上的演化而已,是一種松耦合設計的原則演化而已。
可以把state和strateg看成同一種模式,就是出現問題:if-else,列舉。該怎末轉?用多型的方式實現執行時的改變,具體是什麼模式在開發過程中沒那麼重要。
enum networkstate
;class networkprocessor
else if (state == network_close)
else if (state == network_connect)
}public void operation2()
else if (state == network_close)
else if (state == network_connect)
}public void operation3()
};
class networkstate
};class openstate :public networkstate
return m_instance;
}void operation1()
void operation2()
void operation3()
};class closestate:public networkstate
//...
class networkprocessor
void operation1()
void operation2()
void operation3()
};
C 設計模式 state 狀態模式
head first 設計模式 中的樣例非常不錯,想製造乙個自己主動交易的糖果機,糖果機有四個狀態 投入錢不足,投入錢足夠,糖果,糖果售罄。糖果機的當前狀態處於當中不同的狀態時,它針對同乙個操作的反映動作也不同。傳統面向過程程式設計會套用if else對不同的狀態下分別處理,邏輯麻煩並且不具有可拓展...
C 設計模式 狀態(State)
允許乙個物件在其內部狀態改變時改變它的行為。主要組成 context 環境,上下文,客戶主要使用該類 state 狀態父類或介面 concretestate 具體狀態 using system namespace state public void changestate state state p...
設計模式 狀態模式(State)
核心思想就是 當物件的狀態改變時,同時改變其行為。所以,狀態模式就兩點 1 可以通過改變狀態來獲得不同的行為。2 你的好友能同時看到你的變化。state類是個狀態類 這裡用dispenserstate 及實現類 public inte ce dispenserstate public class f...