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

    结果:

  • 相关阅读:
    23种设计模式(12):策略模式
    23种设计模式(11):责任链模式
    23种设计模式(10):命令模式
    23种设计模式(9):访问者模式
    23种设计模式(8):观察者模式
    23种设计模式(7):中介者模式
    23种设计模式(6):模版方法模式
    创建型模式总结
    23种设计模式(5):原型模式
    leetcode6
  • 原文地址:https://www.cnblogs.com/YourDirection/p/14102561.html
Copyright © 2011-2022 走看看