設計模式---狀態模式(今天CSDN竟然上不去,暫時發在這裡)
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();
}
}
}