状态模式
代码实现:
交通类:
namespace StatePattern
{
public abstract class BaseLight
{
private LightColor _lightColor;
public abstract void Show();
public abstract void TurnContext(Context context);
}
public enum LightColor
{
Green,
Yellow,
Red
}
public class LightGreen:BaseLight
{
public override void Show()
{
Console.WriteLine("CurrentLight color is green,you can go.");
}
public override void TurnContext(Context context)
{
context.CurrentLight = new LightYellow();
}
}
public class LightYellow : BaseLight
{
public override void Show()
{
Console.WriteLine("CurrentLight color is Yellow,you can be careful.");
}
public override void TurnContext(Context context)
{
context.CurrentLight = new LightRed();
}
}
public class LightRed:BaseLight
{
public override void Show()
{
Console.WriteLine("CurrentLight color is Red,you must stop.");
}
public override void TurnContext(Context context)
{
context.CurrentLight = new LightGreen();
}
}
}
上下文:
public class Context
{
public BaseLight CurrentLight { get; set; }
public void Show()
{
this.CurrentLight.Show();
}
public void Turn()
{
this.CurrentLight.TurnContext(this);
}
}
代码调用:
class Program
{
static void Main(string[] args)
{
Context context = new Context();
context.CurrentLight = new LightGreen();
context.Show();
context.Turn();
context.Show();
context.Turn();
context.Show();
context.Turn();
context.Show();
context.Turn();
}
}
结果:
