91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

設計模式-狀態模式

發布時間:2020-08-10 17:37:44 來源:網絡 閱讀:448 作者:全嗲吉祥 欄目:編程語言
abstract class State
    {
        public abstract void Execute(Context context);
    }
    class StateA : State
    {
        public override void Execute(Context context)
        {
            if (context.filter == "+")
            {
                Console.WriteLine("此時執行加法運行");
            }
            else
            {
                context.State = new StateB();
            }
        }
    }
    class StateB : State
    {
        public override void Execute(Context context)
        {
            if (context.filter == "-")
            {
                Console.WriteLine("此時執行減法運行");
            }
            else
            {
                context.State = new StateC();
            }
        }
    }
    class StateC : State
    {
        public override void Execute(Context context)
        {
            if (context.filter == "*")
            {
                Console.WriteLine("此時執行乘法運行");
            }
            else
            {
                context.State = new StateD();
            }
        }
    }
    class StateD : State
    {
        public override void Execute(Context context)
        {
            if (context.filter == "/")
            {
                Console.WriteLine("此時執行除法運行");
            }
            else
            {
                context.State = new StateF();
            }
        }
    }
    class StateF : State
    {
        public override void Execute(Context context)
        {
            if (context.filter == "++")
            {
                Console.WriteLine("此時執行連加運行");
            }
            else
            {
                context.State = new StateG();
            }
        }
    }
    class StateG : State
    {
        public override void Execute(Context context)
        {
            Console.WriteLine("傳入的不是‘+-*/’,該拋異常");//拋異常了,該終止了
        }
    }

        class Context
    {
        public string filter = "+";
        private State state;
        public Context()
        {
            state = new StateA();
        }
        public State State
        {
            get
            {
                return state;
            }
            set
            {
                this.state = value;
                Handle();
            }
        }               
        public void Handle()
        {
            state.Execute(this);            
            state = new StateA();//狀態回歸默認,
        }
    }

        //前端
        static void Main(string[] args)
        {

            Context c = new Context();
            c.filter = "a";
            c.Handle();//如果狀態不回復默認,那么Context的state永遠為stateG,下面執行就會得不到想要的
            c.filter = "*";//
            c.Handle();

            Console.ReadLine();
        }

總結:狀態模式其實就是把對象的各種狀態抽離出去成為一組相互獨立可互相替換的對象,各個狀態中滿足條件則執行當前行為,不滿足則轉入下一個狀態。
類似于策略模式,不過策略模式是客戶指定當前執行某一策略,狀態模式是默認執行某一狀態,然后在狀態中判斷不符合要求就自動轉下一個狀態。
優點:避免了if else判斷,維護起來方便,擴展起來方便,符合單一原則。
缺點:環境類和狀態類互相依賴;各個條件分散成不同的類,看起來不直觀,并且如果有新的狀態加入,需要修改最后的狀態類(改動很小)。不過比起龐大的條件語句塊,這些缺點都可以忽略。
設計模式-狀態模式

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

麻阳| 新和县| 平利县| 固原市| 清丰县| 三河市| 巫溪县| 汽车| 汽车| 克什克腾旗| 社旗县| 安阳县| 巫溪县| 宁远县| 余干县| 平乡县| 久治县| 南召县| 林口县| 洛南县| 巴南区| 山阴县| 大邑县| 东乌珠穆沁旗| 晋州市| 那曲县| 贵溪市| 体育| 苏州市| 班戈县| 陇西县| 赣榆县| 宝丰县| 浦城县| 小金县| 华亭县| 和硕县| 乌恰县| 毕节市| 南木林县| 吉隆县|