0
点赞
收藏
分享

微信扫一扫

c#设计模式——状态模式

独孤凌雪 2022-03-18 阅读 58

前言:状态模式用于解决多个情况下使用多个if else语句让代码显得比较乱的问题,状态模式有环境类,可以控制状态的切换以及不同状态方法的调用;抽象状态类申明不同状态类需要执行的相似的方法,还有不同的具体状态类,如下:

  class Contex
    {
        public State _State, _state1, _state2;
        public Contex()
        {
            _state1 = new State1();
            _state2 = new State2();
            _State = _state1;//设置初始状态
        }
        private  void SetState(State state)
        {
            this._State = state;
        }
        public void Action()//实现状态切换以及不同状态方法执行
        {
            if(this._State == _state1)
            {
                this._State.Handle();
                this.SetState(_state2);
            }
            else if(this._State == _state2)
            {
                this._State.Handle();
                this.SetState(_state1);
            }
        }
    }


    public abstract class  State//抽象状态类
    {
        public abstract void Handle();
    }
    class State1:State//状态类1
    {
        public override  void Handle()
        {
            Console.WriteLine("我是状态1");
        }
    }

    class State2 : State//状态类2
    {
        public override void Handle()
        {
            Console.WriteLine("我是状态2");
        }
    }

调用:

Contex contex = new Contex();
contex.Action();
contex.Action();

输出:

我是状态1
我是状态2
举报

相关推荐

0 条评论