設計模式總結-State模式

設計模式總結-State模式

ID:42020043

大?。?09.89 KB

頁數(shù):6頁

時間:2019-09-06

設計模式總結-State模式_第1頁
設計模式總結-State模式_第2頁
設計模式總結-State模式_第3頁
設計模式總結-State模式_第4頁
設計模式總結-State模式_第5頁
資源描述:

《設計模式總結-State模式》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。

1、注:文檔內(nèi)容基本上來自于網(wǎng)上,并加上自己的理解而成。有的覺得網(wǎng)友總結得非常好,就主全照搬下來,供學習之用。然而,有的摘抄并沒有加上原鏈接和出設計模式學習筆記?狀態(tài)模式1.概述當一個對象的內(nèi)在狀態(tài)改變時允許改變其行為,這個對象看起來像是改變了其類。2.解決的問題主要解決的是當控制一個對象狀態(tài)轉(zhuǎn)換的條件表達式過于復雜時的情況。把狀態(tài)的判斷邏輯轉(zhuǎn)移到表示不同的一系列類當中,可以把復雜的邏輯判斷簡單化。3.模式中的角色3.1上下文環(huán)境(Context):它定義了客戶程序盂要的接口并維護一個具體狀態(tài)角色的實例,將與狀態(tài)相

2、關的操作委托給當詢的ConcreteState對象來處理。3.2抽象狀態(tài)(State):定義一個接口以封裝使用上下文環(huán)境的的一個特定狀態(tài)相關的行為。3.3具體狀態(tài)(ConcreteState):實現(xiàn)抽彖狀態(tài)定義的接口。4.模式解讀4.1狀態(tài)模式的類圖classStatePatternContext-state:StateState+ContextfState)+Request。:voidaproperty?+State():StateHandlefContext):void推象扶態(tài)類.定義一八接匚以封裳與Con

3、text的一個特P氏態(tài)吃關的行為塗擠一個ConcreteState于類的一個女洌.這個女洌運文旳狀態(tài)[冥偉農(nóng)態(tài).爸一個于類弐更-個^Context的一個欣態(tài)憲關的行為4.2狀態(tài)模式的代碼實現(xiàn)///

IIIContext類,維護個ConcreteState子類的實例,這個實例定義當前的狀態(tài)。///publicclassContext{privateStatestate;//////定義Context的初始狀態(tài)//////

4、e=nstate">publicContext(Statestate){this.state=state;}///〈summary〉///可讀寫的狀態(tài)屬性,用于讀取和設置新狀態(tài)///publicStateState{get{returnstate;}set{state=value;}}III

///對請求做處理,并設置下一個狀態(tài)///publicvoidRequest(){state?Handle(this);}}III

5、///抽彖狀態(tài)類,定義-個接口以封裝與Context的一個特定狀態(tài)相關的行為///

publicabstractclassState{publicabstractvoidHandle(Contextcontext);}//////具體狀態(tài)類,每一個子類實現(xiàn)一個與Context的一個狀態(tài)相關的行為IIIpublicclassConcreteStateA:State{//////設置ConcreteStateA的卜——個狀態(tài)是Conerete

6、StateB///

///publicoverridevoidHandle(Contextcontext){Console.WriteLine("當B了狀態(tài)是A?n);context?State=newConcreteStateB();}}publicclassConcreteStateB:State{//////設置ConcreteStateB的下——個狀態(tài)是ConcreteSateA//////<

7、paramname=ncontextMx/param>publicoverridevoidHandle(Contextcontext){Console.WriteLine(11當前狀態(tài)是B.11);context?State=newConcreteStateA();}}4.3客戶端調(diào)用宅IclassProgram{staticvoidMain(string(]args){//設置Context的初始狀態(tài)為ConereteStateAContextcontext=newContext(newConcreteSta

8、teA());//不斷地進行請求,同吋更改狀態(tài)context?Request();context?Request();context?Request();context?Request();Console?Read();運行結果statestatestatestateABABssss■1i-1iCurrentCurrentCurrentCui*i*ent1.模式總結5.1優(yōu)點5XT狀態(tài)

當前文檔最多預覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學公式或PPT動畫的文件,查看預覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。