亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

設計模式-狀態模式

發布時間: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

许昌市| 无锡市| 前郭尔| 安平县| 离岛区| 泰州市| 大方县| 六盘水市| 专栏| 游戏| 阜康市| 白城市| 长武县| 南溪县| 澄迈县| 缙云县| 贞丰县| 巍山| 建宁县| 长宁县| 杭锦旗| 五莲县| 佛坪县| 临夏县| 西宁市| 察哈| 辛集市| 孝义市| 乡宁县| 台东县| 航空| 营山县| 会东县| 益阳市| 龙海市| 都兰县| 崇明县| 大姚县| 探索| 恩施市| 元阳县|