• 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();
            }
        }

    结果:

  • 相关阅读:
    如何掌握所有的程序语言
    Excel技巧:如何绘制一份优秀的甘特图(项目管理)
    Excel技巧:如何绘制一份优秀的甘特图(项目管理)
    程序员的鄙视链
    程序员的鄙视链
    程序员的鄙视链
    程序员之间的鄙视链
    炮(棋盘DP)
    最长公共子上升序列
    black hack
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14102561.html
Copyright © 2020-2023  润新知