狀態模式
狀態機制 這一個在有很多同樣處理的單一介面
但有很多不同處理的邏輯時 , 非常好用的一個模式 , 也是我以前寫 Work Flow 流程時 一直
在尋找解決方案 , 但一直沒有這樣用的方式
那時還不曉得有這個方式可以用 , 這個模式可以把程式,切成一小塊一小塊的邏輯去處理
舉個例假設在寫一個遊戲 ,當 HP 減少到 2/1 時 應該做的邏輯 , 或減少到 3/1時應該做的邏輯
或遇到什麼怪物時做什麼事 , 這樣零零總總的事 , 我們不應該 if else 這樣去寫
因為這樣會讓程式之後不容易維護 , 也更難分工處理
狀態模式的解決方式是把程式分成一個個處理物件去處理
類似底下這樣的做法 , 可以一層層把邏輯給分散出去 , 進而導到
每個邏輯 , 就是一個單純的區塊管理
public class StateMachine {
/*
可以用來參考或共用的資料 , 在流程上會用到的
*/
public object personData{set;get;}
/*
用來存取狀態
*/
public HandleLogicState State{set; private get ;}
public void doWork(){
State.doWork(this);
}
}
狀態模型的本質 :根據狀態來分離和選擇行為
他的優點是 對於相依狀態的 if - else , 理論上來講可以用狀態模式來實現
那麼就可以把判斷移到處理類別中,從中減少if - else 避免巨大的條件判斷式
更進一步的分離狀態和行為 , 以及有更好的礦充性

沒有留言:
張貼留言