国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

3.8設(shè)計(jì)模式——State 狀態(tài)模式(行為型)

這篇具有很好參考價(jià)值的文章主要介紹了3.8設(shè)計(jì)模式——State 狀態(tài)模式(行為型)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

意圖

允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。對(duì)象看起來(lái)似乎修改了它的類。

結(jié)構(gòu)

3.8設(shè)計(jì)模式——State 狀態(tài)模式(行為型),設(shè)計(jì)模式,java,開(kāi)發(fā)語(yǔ)言,設(shè)計(jì)模式,狀態(tài)模式

  • Context(上下文)定義客戶感興趣的接口;維護(hù)一個(gè)ConcreteState子類的實(shí)例,這個(gè)實(shí)例定義當(dāng)前狀態(tài)。
  • State(狀態(tài))定義一個(gè)接口以封裝與Context的一個(gè)特定狀態(tài)相關(guān)的行為。
  • ConcreteState(具體狀態(tài)子類)每個(gè)子類實(shí)現(xiàn)與Context的一個(gè)狀態(tài)相關(guān)的行為。
  • Handle是一個(gè)代表處理當(dāng)前狀態(tài)的動(dòng)作或方法的命名。在狀態(tài)模式中,每個(gè)具體狀態(tài)子類都會(huì)實(shí)現(xiàn)自己的 handle 方法,用來(lái)定義該狀態(tài)下的具體行為或邏輯。當(dāng)上下文調(diào)用 handle 方法時(shí),實(shí)際執(zhí)行的是當(dāng)前狀態(tài)對(duì)應(yīng)的具體狀態(tài)子類中的 handle 方法。

適用性

  • 一個(gè)對(duì)象的行為決定于它的狀態(tài),并且它必須在運(yùn)行時(shí)刻根據(jù)狀態(tài)改變它的行為。
  • 一個(gè)操作中含有龐大的多分支條件語(yǔ)句,且這些分支依賴于該對(duì)象的狀態(tài)。這個(gè)狀態(tài)常用一個(gè)或多個(gè)枚舉常量表示。通常,有多個(gè)操作包含這一相同的條件結(jié)構(gòu)。State模式將每一個(gè)條件分支放入一個(gè)獨(dú)立的類中。這使得開(kāi)發(fā)者可以根據(jù)對(duì)象自身的情況將對(duì)象的狀態(tài)作為一個(gè)對(duì)象,這個(gè)對(duì)象可以不依賴于其他對(duì)象獨(dú)立變化。

代碼示例

// 狀態(tài)接口
interface State {
    void handle();
}

// 具體狀態(tài)子類A
class ConcreteStateA implements State {
    @Override
    public void handle() {
        System.out.println("Handling state A");
    }
}

// 具體狀態(tài)子類B
class ConcreteStateB implements State {
    @Override
    public void handle() {
        System.out.println("Handling state B");
    }
}

// 上下文類
class Context {
    private State currentState;

    public Context() {
        // 初始狀態(tài)為A
        currentState = new ConcreteStateA();
    }

    public void setState(State state) {
        this.currentState = state;
    }

    public void request() {
        currentState.handle();
    }
}

// 測(cè)試
public class StatePatternExample {
    public static void main(String[] args) {
        Context context = new Context();

        // 初始狀態(tài)為A
        context.request();

        // 改變狀態(tài)為B
        context.setState(new ConcreteStateB());
        context.request();
    }
}

在這個(gè)示例中,State接口定義了狀態(tài)的行為,ConcreteStateA和ConcreteStateB是具體狀態(tài)子類,分別實(shí)現(xiàn)了不同狀態(tài)下的行為。Context類維護(hù)了一個(gè)當(dāng)前狀態(tài)的實(shí)例,根據(jù)當(dāng)前狀態(tài)來(lái)調(diào)用相應(yīng)的行為。在測(cè)試中,創(chuàng)建了一個(gè)Context對(duì)象并初始化為狀態(tài)A,然后改變狀態(tài)為B并調(diào)用請(qǐng)求方法,觀察輸出結(jié)果。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-858474.html

到了這里,關(guān)于3.8設(shè)計(jì)模式——State 狀態(tài)模式(行為型)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 設(shè)計(jì)模式——狀態(tài)模式(State Pattern)

    對(duì)象的行為依賴于它的狀態(tài)(屬性),并且可以根據(jù)它的狀態(tài)改變而改變它的相關(guān)行為。 1.1、定義狀態(tài)接口 1.2、定義開(kāi)始狀態(tài)實(shí)現(xiàn)類 1.3、定義停止?fàn)顟B(tài)實(shí)現(xiàn)類 1.4、創(chuàng)建 Context 類 1.5、使用 Context 來(lái)查看當(dāng)狀態(tài) State 改變時(shí)的行為變化。 創(chuàng)建型模式 結(jié)構(gòu)型模式 1、設(shè)計(jì)模式——

    2024年02月06日
    瀏覽(22)
  • 設(shè)計(jì)模式之:狀態(tài)模式(State Pattern)

    狀態(tài)模式(State Pattern) 狀態(tài)模式是一種行為設(shè)計(jì)模式,允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為。這種模式通過(guò)把狀態(tài)的變化邏輯分布到State的子類之間,減少了相互間的依賴,使得狀態(tài)的切換更加清晰。 狀態(tài)模式的關(guān)鍵是將那些會(huì)隨著狀態(tài)改變而改變的行為抽離出

    2024年02月21日
    瀏覽(20)
  • 大話設(shè)計(jì)模式——17.狀態(tài)模式(State Pattern)

    大話設(shè)計(jì)模式——17.狀態(tài)模式(State Pattern)

    簡(jiǎn)介 對(duì)象的行為依賴于它的狀態(tài)(屬性),可以根據(jù)狀態(tài)的改變而改變相關(guān)行為。 UML圖: 應(yīng)用場(chǎng)景: 對(duì)象的行為取決于其狀態(tài),并且必須要在運(yùn)行時(shí)刻根據(jù)狀態(tài)而改變行為 代碼中包含大量與對(duì)象狀態(tài)有關(guān)的條件語(yǔ)句 示例 上午、下午、晚上工作的狀態(tài) 上下文對(duì)象: 狀態(tài)

    2024年04月14日
    瀏覽(31)
  • 設(shè)計(jì)模式之狀態(tài)模式(State)的C++實(shí)現(xiàn)

    設(shè)計(jì)模式之狀態(tài)模式(State)的C++實(shí)現(xiàn)

    在組件功能開(kāi)發(fā)過(guò)程中,某些對(duì)象的狀態(tài)經(jīng)常面臨變化,不同的狀態(tài),其對(duì)象的操作行為不同。比如根據(jù)狀態(tài)寫(xiě)的if else條件情況,且這種條件變化是經(jīng)常變化的,這樣的代碼不易維護(hù)??梢允褂脿顟B(tài)模式解決這類問(wèn)題。狀態(tài)模式是將狀態(tài)值抽象成一個(gè)基類,將不同狀態(tài)下的操

    2024年02月12日
    瀏覽(28)
  • C++設(shè)計(jì)模式_18_State 狀態(tài)模式

    State和Memento被歸為“狀態(tài)變化”模式。 在組件構(gòu)建過(guò)程中,某些對(duì)象的狀態(tài)經(jīng)常面臨變化,如何對(duì)這些變化進(jìn)行有效的管理?同時(shí)又維持高層模塊的穩(wěn)定?“狀態(tài)變化”模式為這一問(wèn)題提供了一種解決方案。 State Memento

    2024年02月06日
    瀏覽(18)
  • 設(shè)計(jì)模式二十一:狀態(tài)模式(State Pattern)

    一個(gè)對(duì)象的內(nèi)部狀態(tài)發(fā)生變化時(shí),允許對(duì)象改變其行為。這種模式使得一個(gè)對(duì)象看起來(lái)好像在運(yùn)行時(shí)改變了它的類,主要目的是將狀態(tài)的行為從主要對(duì)象中分離出來(lái),使得主要對(duì)象不必包含所有狀態(tài)的邏輯,而是將每個(gè)狀態(tài)的行為封裝在獨(dú)立的類中。這有助于減少代碼的重復(fù)

    2024年02月11日
    瀏覽(18)
  • 行為型設(shè)計(jì)模式——狀態(tài)模式

    行為型設(shè)計(jì)模式——狀態(tài)模式

    狀態(tài)模式是比較簡(jiǎn)單的設(shè)計(jì)模式,它的主要作用是減少代碼中大量的 if-else 或者 switch-case 等邏輯判斷(俗稱屎山)。它將每個(gè)狀態(tài)定義為一個(gè)類,而每個(gè)狀態(tài)類有自己對(duì)應(yīng)的方法,因此當(dāng)需要根據(jù)狀態(tài)執(zhí)行邏輯代碼時(shí)不需要寫(xiě)大量的if-else判斷是哪個(gè)狀態(tài)然后執(zhí)行對(duì)應(yīng)的邏輯

    2024年02月02日
    瀏覽(30)
  • 設(shè)計(jì)模式行為型-狀態(tài)模式

    設(shè)計(jì)模式行為型-狀態(tài)模式

    狀態(tài)模式是一種行為型設(shè)計(jì)模式,用于處理對(duì)象在不同狀態(tài)下的行為變化。它將對(duì)象的行為封裝在不同狀態(tài)類中,通過(guò)狀態(tài)的切換實(shí)現(xiàn)不同行為的觸發(fā)。 本文將介紹狀態(tài)模式的基本概念、應(yīng)用場(chǎng)景以及優(yōu)勢(shì)與適用性。 實(shí)現(xiàn)具體狀態(tài)類 具體工作類: 上下文類包含狀態(tài)對(duì)象的引

    2024年02月10日
    瀏覽(25)
  • 設(shè)計(jì)模式行為型——狀態(tài)模式

    設(shè)計(jì)模式行為型——狀態(tài)模式

    ? 目錄 狀態(tài)模式的定義 狀態(tài)模式的實(shí)現(xiàn) 狀態(tài)模式角色 狀態(tài)模式類圖 狀態(tài)模式舉例 狀態(tài)模式代碼實(shí)現(xiàn) 狀態(tài)模式的特點(diǎn) 優(yōu)點(diǎn) 缺點(diǎn) 使用場(chǎng)景 注意事項(xiàng) 實(shí)際應(yīng)用 ? ? ? ?在軟件開(kāi)發(fā)過(guò)程中,應(yīng)用程序中的部分對(duì)象可能會(huì)根據(jù)不同的情況做出不同的行為,把這種對(duì)象稱為有狀態(tài)

    2024年02月14日
    瀏覽(24)
  • 設(shè)計(jì)模式—行為型模式之狀態(tài)模式

    設(shè)計(jì)模式—行為型模式之狀態(tài)模式

    狀態(tài)(State)模式:對(duì)有狀態(tài)的對(duì)象,把復(fù)雜的“判斷邏輯”提取到不同的狀態(tài)對(duì)象中,允許狀態(tài)對(duì)象在其內(nèi)部狀態(tài)發(fā)生改變時(shí)改變其行為。 狀態(tài)模式包含以下主要角色: 環(huán)境類(Context)角色:也稱為上下文,它定義了客戶端需要的接口,內(nèi)部維護(hù)一個(gè)當(dāng)前狀態(tài),并負(fù)責(zé)具

    2024年01月15日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包