文章出處
文章列表
在今天,讀書有時是件“麻煩”事。它需要你付出時間,付出精力,還要付出一份心境。--僅以《大話設計模式》來祭奠那逝去的……
狀態模式:當一個對象內在狀態改變時,允許改變其行為,這個對象看起來像是改變了其類
將與特定狀態相關的行為局部化,并且將不同狀態的行為分割開來
1.男人吃飽了工作,餓了不想工作
早上起來,男人吃了飯,大喊一聲,我吃飽了,開始工作了;工作了12個小時候,還沒吃飯~,大喊一聲,我餓了,不想工作了
定義抽象狀態類,以及具體的吃飽和饑餓狀態類,定義每個狀態對應的行為方式
/// <summary> /// 抽象狀態類 /// </summary> public abstract class State { public abstract void Action(Man man); } /// <summary> /// 吃飽狀態 /// </summary> public class FullState : State { public override void Action(Man man) { Console.WriteLine("我吃飽了,開始工作了"); } } /// <summary> /// 饑餓狀態 /// </summary> public class HungeryState : State { public override void Action(Man man) { Console.WriteLine("我餓了,不想工作了"); } }
定義男人類(執行具體的業務)
/// <summary> /// 男人類 /// </summary> public class Man { private State currentState; public Man(State state) { this.currentState = state; } public void Work() { Console.WriteLine("我已經工作了12個小時了,還沒吃飯呢~"); this.currentState = new HungeryState(); } public void Say() { currentState.Action(this); } }
開啟場景模擬
static void Main(string[] args) { //早上起來,男人吃了飯 Man man = new Man(new FullState()); //大喊一聲,我吃飽了,開始工作了 man.Say(); //工作了12個小時候,還沒吃飯~ man.Work(); //大喊一聲,我餓了,不想工作了 man.Say(); }
文章列表
全站熱搜
留言列表