用State模式建立嚮導的實踐。。。

2021-09-20 17:42:16 字數 538 閱讀 8603

嚮導就是類似於安裝軟體時,一大堆下一步的那個窗體。每乙個上一步下一步意味著窗體上的控制項需要改變,相關的按鈕的功能等也需要改變。在製作乙個嚮導時,最初設計中,我用的enum來表示每乙個步驟。比如:

switch(stepenum) 

public abstract class initwizardstepstate 

public abstract bool islaststep  

}

public class context 

然後將決定上下步驟的部分從stepstate中提取出來。放在主視窗中完成。進一步降低了步驟類之間的耦合。同時增加各步驟類於context之間的聯絡。比如:

將public abstract void addcontroltocontainer(control container);

改為public abstract void addcontroltocontainer(control container,context context);

這樣可以更好的保持可擴充套件性和可重用性。

用State模式減少if elseif語句

注重這種模式的理解!我們在寫程式的過程中會遇到很多的邏輯判斷,一般都是用if else if.else if swith case等來做判斷,然後根據結果做一下分支處理,這樣寫雖然方便,但會增加以後的維護難度,假如有上百個if else if判斷,估計後期維護的人看到 頭都大了。像這種情況可以用st...

深入討論設計模式中的State狀態模式

最近看了些部門牛人的 有網路框架也有具體的業務系統,其中頻繁使用了state的設計模式。在實現大規模複雜邏輯時,狀態設計模式確實是非常有效的手段。在乙個複雜的邏輯中,乙個物件的行為往往是不連續的,這種不連續是指站在 執行的角度來看的 物件的乙個完整操作可能會被多個非同步操作所中斷,而高效能的後台伺服...

state模式在遊戲中的運用

好久沒有寫blog了!最近決定多寫寫,把自己的經驗多給大家分享!state模式的定義 不同的狀態,不同的行為 或者說,每個狀態有著相應的行為.我舉個遊戲應用的例子吧!mmo中,遊戲世界可以分為 登陸時前,進入遊戲中,進入遊戲後 3個狀態 我打的比喻 首先 抽象狀態的基類 class game cla...