设计模式—状态模式(今天CSDN竟然上不去,暂时发在这里)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
| using System; using System.Collections.Generic; using System.Text;
namespace ConsoleApplication1 { abstract class State { public abstract void DoWhatIShouldDo(Worker w); }
class Young : State { public override void DoWhatIShouldDo(Worker w) { if (w.Age <= 35) { Console.WriteLine("我年轻,逍遥自在"); } else { w.State = new MiddleAge(); w.DoWhatIShouldDo(); } } }
class MiddleAge : State { public override void DoWhatIShouldDo(Worker w) { if (w.Age <= 50) { Console.WriteLine("人到中年"); } else { w.State = new Old(); w.DoWhatIShouldDo(); } } }
class Old : State { public override void DoWhatIShouldDo(Worker w) { Console.WriteLine("老年生活"); } }
class Worker { State state; int age;
public Worker() { age = 1; state = new Young(); }
public int Age { get { return age; } set { age = value; } }
public State State { get { return State; } set { state = value; } }
public void DoWhatIShouldDo() { state.DoWhatIShouldDo(this); } }
class Client { public static void Main() { Worker w = new Worker(); w.Age = 5; w.DoWhatIShouldDo(); w.Age = 45; w.DoWhatIShouldDo(); w.Age = 80; w.DoWhatIShouldDo(); Console.Read(); } } }
|