最近在為澳洲一家保險公司做web應用,在乙個收集使用者位址資訊的頁面中,我遇到了乙個問題:
1.當使用者輸入正確的位址,通過驗證。
2.當使用者第一次輸入錯誤的位址,不通過。
3.當使用者第二次輸入,不論正確與否,都將通過。
當面對這樣的需求的時候,我立馬有了解決方案,首先要有乙個全域性變數來儲存他輸入的位址是否正確的boolean,然後還得有乙個session裡存放乙個位址變數,來比較位址是否改變。
由此可抽象出狀態類:
public在設計好狀態類和如何切換狀態之後,狀態機container的具體實現如下:abstract
class
state
public
state
}}public
class retry extends
state else
}public
state
else
if(statecontext.isaddresschanged())}}
public如此簡單的幾個類就構成了狀態機的實現,方便處理了邏輯的轉化以及頁面跳轉的規則。state模式在實際使用中比較多,適合"狀態的切換".因為我們經常會使用if elseif else 進行狀態切換, 如果針對狀態的這樣判斷切換反覆出現,我們就要聯想到是否可以採取state模式了.class
statecontext
public
void
changestate(address address)
public
boolean
return
addressvalidator(address);
}}
希望能對大家有幫助。
狀態機模式
狀態機又叫有限狀態機,它有 3 個部分組成 狀態 事件 動作。其中,事件也稱為轉移條件。事件觸發狀態的轉移及動作的執行。不過,動作不是必須的,也可能只轉移狀態,不執行任何動作。針對狀態機,有三種實現方式。第一種實現方式叫分支邏輯法。利用 if else 或者 switch case 分支邏輯,參照狀...
狀態機 狀態機0
近半年都忙於做專案,沒有太多的時間去整理和總結在專案中用過的技術 個人還是覺得技術需要總結提煉和沉澱的,忙到沒時間去總結提公升其實不 是什麼好事,這次講下狀態機,在戰鬥型別的遊戲中角色有多種不同的狀態,而狀態的切換錯綜複雜,23種設計模式中有一種模式叫做狀態模式,不過 這種模式是把狀態切換條件放到各...
python 狀態機 Python 狀態機
class statemachine def init self self.handlers 狀態轉移函式字典 self.startstate none 初始狀態 self.endstate 最終狀態集合 引數name為狀態名,handler為狀態轉移函式,end state表明是否為最終狀態 de...