成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

狀態(tài)模式(State)

qc1iu / 1915人閱讀

摘要:狀態(tài)模式一狀態(tài)模式定義允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為這個(gè)對(duì)象看起來像是改變了其類二具體實(shí)現(xiàn)創(chuàng)建抽象狀態(tài)接口創(chuàng)建容器創(chuàng)建具體狀態(tài)類調(diào)用輸出三優(yōu)缺點(diǎn)優(yōu)點(diǎn)封裝了轉(zhuǎn)換規(guī)則擴(kuò)展性強(qiáng),易于添加新的狀態(tài)對(duì)象或行為缺點(diǎn)狀態(tài)過多導(dǎo)致類膨脹四源碼

狀態(tài)模式

一. 狀態(tài)模式 1.1 定義

允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為.這個(gè)對(duì)象看起來像是改變了其類.

二. 具體實(shí)現(xiàn) 2.1 創(chuàng)建抽象狀態(tài)接口
    public interface IState {
        void print(Context context);
    }
2.2 創(chuàng)建容器
    public class Context {
        private IState state;
        public Context(){
            this.state = null;
        }
        public void setState(IState state){
            this.state = state;
            System.out.println("setState : " + state.getClass().getSimpleName());
        }
        public void print(){
            state.print(this);
        }
    }
2.3 創(chuàng)建具體狀態(tài)類
    public class StateA implements IState {
        @Override
        public void print(Context context) {
            System.out.println("StateA print ...");
            context.setState(new StateB());
        }
    }
    public class StateB implements IState {
        @Override
        public void print(Context context) {
            System.out.println("StateB print ...");
            context.setState(new StateA());
        }
    }
2.5 調(diào)用
    public static void main(String[] args) {
        Context context = new Context();
        context.setState(new StateA());
        context.print();
        context.print();
    }
2.6 輸出
    setState : StateA
    StateA print ...
    setState : StateB
    StateB print ...
    setState : StateA
三. 優(yōu)缺點(diǎn) 3.1 優(yōu)點(diǎn)

封裝了轉(zhuǎn)換規(guī)則.

擴(kuò)展性強(qiáng),易于添加新的狀態(tài)對(duì)象或行為.

3.2 缺點(diǎn)

狀態(tài)過多導(dǎo)致類膨脹.

四. 源碼
    https://github.com/Seasons20/DisignPattern.git

END

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69727.html

相關(guān)文章

  • FSM狀態(tài)機(jī)之狀態(tài)模式

    摘要:要注意這里的一個(gè)狀態(tài)行為因?yàn)檫@個(gè)詞是狀態(tài)模式中最重要的個(gè)概念??紤]到這點(diǎn),聰明的在中推出了狀態(tài)機(jī)這個(gè)偽函數(shù),能夠幫助我們快速實(shí)現(xiàn)狀態(tài)化。這里就引入了狀態(tài)機(jī)這個(gè)概念,以及和他對(duì)應(yīng)的狀態(tài)表。 ?首先聲明一點(diǎn),這個(gè)模式是我目前見過最好用(本人觀點(diǎn)),但是也是最難理解的一個(gè)(本人觀點(diǎn))。 所以大家需要做好心理準(zhǔn)備,如果,對(duì)這個(gè)模式?jīng)]有特別強(qiáng)烈的需求,比如: 我有一個(gè)Button,我按次數(shù)點(diǎn)擊它...

    k00baa 評(píng)論0 收藏0
  • 設(shè)計(jì)模式(10)狀態(tài)模式(講解+應(yīng)用)

    摘要:狀態(tài)模式對(duì)于對(duì)象內(nèi)部的狀態(tài),允許其在不同的狀態(tài)下,擁有不同的行為,對(duì)狀態(tài)單獨(dú)封裝成類。通過什么來舉例子呢設(shè)計(jì)到多狀態(tài),不同狀態(tài)下各自具有不同行為的東西,而且理解起來相對(duì)容易的。下篇更新適配器模式 目錄 狀態(tài)模式 為什么使用狀態(tài)模式? 應(yīng)用實(shí)例 狀態(tài)模式 狀態(tài)模式,顧名思義,肯定是和狀態(tài)有關(guān),進(jìn)一步思考,我們?cè)谟懻摰氖窃O(shè)計(jì)模式,設(shè)計(jì)模式中的重要原則對(duì)變化的進(jìn)行封裝,順著這個(gè)思路去想,...

    lakeside 評(píng)論0 收藏0
  • Java重構(gòu)-策略模式狀態(tài)模式、衛(wèi)語句

    摘要:前言當(dāng)代碼中出現(xiàn)多重語句或者語句時(shí)。代替多重分支這個(gè)情況的代替方式是可以為晴天時(shí)處理邏輯下雨時(shí)處理邏輯陰天時(shí)處理邏輯策略模式使用策略模式可以代替多重和語句,讓代碼維護(hù)變得更加簡單。狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變的時(shí)候改變其行為。 前言 當(dāng)代碼中出現(xiàn)多重if-else語句或者switch語句時(shí)。弊端之一:如果這樣的代碼出現(xiàn)在多處,那么一旦出現(xiàn)需求變更,就需要把所有地方的if-els...

    Sourcelink 評(píng)論0 收藏0
  • 設(shè)計(jì)模式手冊(cè)之狀態(tài)模式

    摘要:什么是狀態(tài)模式狀態(tài)模式對(duì)象行為是基于狀態(tài)來改變的。原文地址設(shè)計(jì)模式手冊(cè)之狀態(tài)模式優(yōu)缺點(diǎn)優(yōu)點(diǎn)封裝了轉(zhuǎn)化規(guī)則,對(duì)于大量分支語句,可以考慮使用狀態(tài)類進(jìn)一步封裝。 1. 什么是狀態(tài)模式? 狀態(tài)模式:對(duì)象行為是基于狀態(tài)來改變的。 內(nèi)部的狀態(tài)轉(zhuǎn)化,導(dǎo)致了行為表現(xiàn)形式不同。所以,用戶在外面看起來,好像是修改了行為。 Webpack4系列教程(17篇) + 設(shè)計(jì)模式手冊(cè)(16篇):GitHub地址 博...

    call_me_R 評(píng)論0 收藏0
  • 設(shè)計(jì)模式手冊(cè)之狀態(tài)模式

    摘要:什么是狀態(tài)模式狀態(tài)模式對(duì)象行為是基于狀態(tài)來改變的。原文地址設(shè)計(jì)模式手冊(cè)之狀態(tài)模式優(yōu)缺點(diǎn)優(yōu)點(diǎn)封裝了轉(zhuǎn)化規(guī)則,對(duì)于大量分支語句,可以考慮使用狀態(tài)類進(jìn)一步封裝。 1. 什么是狀態(tài)模式? 狀態(tài)模式:對(duì)象行為是基于狀態(tài)來改變的。 內(nèi)部的狀態(tài)轉(zhuǎn)化,導(dǎo)致了行為表現(xiàn)形式不同。所以,用戶在外面看起來,好像是修改了行為。 Webpack4系列教程(17篇) + 設(shè)計(jì)模式手冊(cè)(16篇):GitHub地址 博...

    Faremax 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<