C# 设计模式(21)状态模式
状态模式
代码实现:
交通类:
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(); } }
结果: