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

    结果:

  • 相关阅读:
    三数之和
    盛最多水的容器
    正则表达式匹配
    最长回文子串
    寻找两个有序数组的中位数
    2、二维数组中的查找
    1、找出数组中重复的数字
    mongodb的下载地址
    提取快捷方式的图标资源问题
    一条数据引发的问题
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14102561.html
Copyright © 2011-2022 走看看