zoukankan      html  css  js  c++  java
  • 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();
            }
        }

    结果:

  • 相关阅读:
    C# webservice服务跟踪调试方法(转)
    ServiceBase.OnStart 方法
    基本类型和引用类型
    js基本概念
    在HTML中使用JavaScript
    js中的this
    SQL 取两日期的记录
    常用数据结构[转]
    How to: Pass Values Between ASP.NET Web Pages
    example for store procedure with both transcration and error handling
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14102561.html
Copyright © 2011-2022 走看看