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

設(shè)計(jì)模式:狀態(tài)模式示例

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

狀態(tài)模式可以應(yīng)用于多種場(chǎng)景,下面是一些示例及其代碼實(shí)現(xiàn):

1. 交通信號(hào)燈

交通信號(hào)燈(紅燈、綠燈、黃燈)根據(jù)當(dāng)前狀態(tài)切換到下一個(gè)狀態(tài)。

// 狀態(tài)接口
interface TrafficLightState {
    void change(TrafficLight trafficLight);
}

// 具體狀態(tài):紅燈
class RedLight implements TrafficLightState {
    public void change(TrafficLight trafficLight) {
        System.out.println("紅燈 - 請(qǐng)等待");
        trafficLight.setState(new GreenLight());
    }
}

// 具體狀態(tài):綠燈
class GreenLight implements TrafficLightState {
    public void change(TrafficLight trafficLight) {
        System.out.println("綠燈 - 請(qǐng)通過(guò)");
        trafficLight.setState(new YellowLight());
    }
}

// 具體狀態(tài):黃燈
class YellowLight implements TrafficLightState {
    public void change(TrafficLight trafficLight) {
        System.out.println("黃燈 - 請(qǐng)小心");
        trafficLight.setState(new RedLight());
    }
}

// 上下文
class TrafficLight {
    private TrafficLightState state;

    public TrafficLight(TrafficLightState state) {
        this.state = state;
    }

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

    public void change() {
        state.change(this);
    }
}

// 客戶端代碼
public class TrafficLightDemo {
    public static void main(String[] args) {
        TrafficLight light = new TrafficLight(new RedLight());
        light.change(); // 輸出: 綠燈 - 請(qǐng)通過(guò)
        light.change(); // 輸出: 黃燈 - 請(qǐng)小心
        light.change(); // 輸出: 紅燈 - 請(qǐng)等待
    }
}

2. 游戲角色等級(jí)系統(tǒng)

游戲中的角色根據(jù)經(jīng)驗(yàn)值提升等級(jí),不同等級(jí)有不同的行為。

// 狀態(tài)接口
interface LevelState {
    void play();
    void doubleExperience();
}

// 具體狀態(tài):新手
class NoviceLevel implements LevelState {
    public void play() {
        System.out.println("新手玩家 - 正常經(jīng)驗(yàn)獲取");
    }

    public void doubleExperience() {
        System.out.println("新手玩家 - 無(wú)法雙倍經(jīng)驗(yàn)");
    }
}

// 具體狀態(tài):高手
class MasterLevel implements LevelState {
    public void play() {
        System.out.println("高手玩家 - 高速經(jīng)驗(yàn)獲取");
    }

    public void doubleExperience() {
        System.out.println("高手玩家 - 雙倍經(jīng)驗(yàn)獲取");
    }
}

// 上下文
class Player {
    private LevelState levelState;

    public Player(LevelState levelState) {
        this.levelState = levelState;
    }

    public void upgradeLevel(LevelState levelState) {
        this.levelState = levelState;
    }

    public void play() {
        levelState.play();
    }

    public void doubleExperience() {
        levelState.doubleExperience();
    }
}

// 客戶端代碼
public class GameDemo {
    public static void main(String[] args) {
        Player player = new Player(new NoviceLevel());
        player.play(); // 輸出: 新手玩家 - 正常經(jīng)驗(yàn)獲取
        player.doubleExperience(); // 輸出: 新手玩家 - 無(wú)法雙倍經(jīng)驗(yàn)

        // 玩家升級(jí)
        player.upgradeLevel(new MasterLevel());
        player.play(); // 輸出: 高手玩家 - 高速經(jīng)驗(yàn)獲取
        player.doubleExperience(); // 輸出: 高手玩家 - 雙倍經(jīng)驗(yàn)獲取
    }
}

這兩個(gè)示例展示了狀態(tài)模式在不同場(chǎng)景下的應(yīng)用。在第一個(gè)示例中,交通信號(hào)燈根據(jù)當(dāng)前狀態(tài)變化到下一個(gè)狀態(tài);在第二個(gè)示例中,游戲角色根據(jù)等級(jí)狀態(tài)擁有不同的行為。狀態(tài)模式使得狀態(tài)的變化更加靈活和可管理,同時(shí)也使得代碼更加清晰和易于維護(hù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-855946.html

到了這里,關(guān)于設(shè)計(jì)模式:狀態(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)文章

  • Java設(shè)計(jì)模式之狀態(tài)模式詳解

    大家好,我是免費(fèi)搭建查券返利機(jī)器人賺傭金就用微賺淘客系統(tǒng)3.0的小編,也是冬天不穿秋褲,天冷也要風(fēng)度的程序猿!今天,讓我們一同探討Java設(shè)計(jì)模式之狀態(tài)模式,這是代碼中的智能狀態(tài)切換,能夠讓對(duì)象在不同狀態(tài)下表現(xiàn)出不同的行為。 狀態(tài)模式的核心思想 狀態(tài)模式

    2024年01月20日
    瀏覽(23)
  • 【十五】設(shè)計(jì)模式~~~行為型模式~~~狀態(tài)模式(Java)

    【十五】設(shè)計(jì)模式~~~行為型模式~~~狀態(tài)模式(Java)

    【學(xué)習(xí)難度:★★★☆☆,使用頻率:★★★☆☆】 在很多情況下,一個(gè)對(duì)象的行為取決于一個(gè)或多個(gè)動(dòng)態(tài)變化的屬性,這樣的屬性叫做狀態(tài),這樣的對(duì)象叫做有狀態(tài)的(stateful)對(duì)象,這樣的對(duì)象狀態(tài)是從事先定義好的一系列值中取出的。當(dāng)一個(gè)這樣的對(duì)象與外部事件產(chǎn)生互

    2024年02月07日
    瀏覽(16)
  • 【Java 設(shè)計(jì)模式】行為型之狀態(tài)模式

    狀態(tài)模式(State Pattern)是一種行為型設(shè)計(jì)模式,用于通過(guò)將對(duì)象的行為封裝到不同的狀態(tài)類中,使得對(duì)象在不同的狀態(tài)下具有不同的行為。狀態(tài)模式允許對(duì)象在內(nèi)部狀態(tài)發(fā)生改變時(shí)改變其行為,而無(wú)需修改其代碼。在本文中,我們將深入研究Java中狀態(tài)模式的定義、結(jié)構(gòu)、使

    2024年01月24日
    瀏覽(24)
  • JAVA 23種設(shè)計(jì)模式示例

    JAVA 23種設(shè)計(jì)模式示例

    目錄 一.單例模式 二.工廠方法模式 三.抽象工廠模式 四.建造者模式 五.原型模式 六.享元模式 七.門(mén)面模式 八.適配器模式 九.裝飾者模式 十.策略模式 十一.模板方法模式 十二.觀察者模式 十三.責(zé)任鏈模式 十四.代理模式 十五.橋接模式 十六.組合模式 十七.命令模式 十八.狀態(tài)

    2024年02月13日
    瀏覽(26)
  • 設(shè)計(jì)模式-外觀模式在Java中的使用示例

    設(shè)計(jì)模式-外觀模式在Java中的使用示例

    外觀模式是一種使用頻率非常高的結(jié)構(gòu)型設(shè)計(jì)模式,它通過(guò)引入一個(gè)外觀角色來(lái)簡(jiǎn)化客戶端與子系統(tǒng) 之間的交互,為復(fù)雜的子系統(tǒng)調(diào)用提供一個(gè)統(tǒng)一的入口,降低子系統(tǒng)與客戶端的耦合度,且客戶端調(diào)用非常方便。 示例 自己泡茶和去茶館喝茶的區(qū)別,如果是自己泡茶需要自

    2024年02月17日
    瀏覽(24)
  • 設(shè)計(jì)模式-建造者模式在Java中使用示例

    設(shè)計(jì)模式-建造者模式在Java中使用示例

    復(fù)雜對(duì)象的組裝與創(chuàng)建 沒(méi)有人買(mǎi)車(chē)會(huì)只買(mǎi)一個(gè)輪胎或者方向盤(pán),大家買(mǎi)的都是一輛包含輪胎、方向盤(pán)和發(fā)動(dòng)機(jī)等多個(gè)部件的完整汽車(chē)。 如何將這些部件組裝成一輛完整的汽車(chē)并返回給用戶,這是建造者模式需要解決的問(wèn)題。 建造者模式又稱為生成器模式,它是一種較為復(fù)雜

    2024年02月16日
    瀏覽(27)
  • Java設(shè)計(jì)模式:深入解析與應(yīng)用示例

    設(shè)計(jì)模式是一種在特定上下文中反復(fù)出現(xiàn)的可重用解決方案,用于處理軟件設(shè)計(jì)中常見(jiàn)的問(wèn)題。掌握設(shè)計(jì)模式不僅可以幫助我們編寫(xiě)出更優(yōu)雅、更易于理解和維護(hù)的代碼,而且也是Java面試中的常考知識(shí)點(diǎn)。在本文中,我們將探討幾種常見(jiàn)的設(shè)計(jì)模式,包括它們的定義、使用場(chǎng)

    2024年02月09日
    瀏覽(21)
  • 【拆解設(shè)計(jì)模式】工廠方法及其Java示例

    在我們的編程世界中,設(shè)計(jì)模式就如同一盞指路明燈,引領(lǐng)我們走向優(yōu)雅、高效的代碼之路。設(shè)計(jì)模式是一種在特定環(huán)境下解決特定問(wèn)題的優(yōu)秀方案,它是前人的經(jīng)驗(yàn)總結(jié),是我們編程的寶貴財(cái)富。 1.1 設(shè)計(jì)模式的定義和分類 設(shè)計(jì)模式,簡(jiǎn)單來(lái)說(shuō),就是一套被反復(fù)使用、多數(shù)

    2024年01月20日
    瀏覽(34)
  • 設(shè)計(jì)模式-職責(zé)鏈模式在Java中使用示例-采購(gòu)審批系統(tǒng)

    設(shè)計(jì)模式-職責(zé)鏈模式在Java中使用示例-采購(gòu)審批系統(tǒng)

    采購(gòu)審批是分級(jí)進(jìn)行的,即根據(jù)采購(gòu)金額的不同由不同層次的主管人員來(lái)審批,主任可以審批5萬(wàn)元以下(不包括5萬(wàn)元) 的采購(gòu)單,副董事長(zhǎng)可以審批5萬(wàn)元至10萬(wàn)元(不包括10萬(wàn)元)的采購(gòu)單,董事長(zhǎng)可以審批10萬(wàn)元至50萬(wàn)元(不包括50萬(wàn)元) 的采購(gòu)單,50萬(wàn)元及以上的采購(gòu)單

    2024年02月16日
    瀏覽(18)
  • Java設(shè)計(jì)模式之行為型-狀態(tài)模式(UML類圖+案例分析)

    Java設(shè)計(jì)模式之行為型-狀態(tài)模式(UML類圖+案例分析)

    目錄 一、基礎(chǔ)概念 二、UML類圖 三、角色設(shè)計(jì) 四、案例分析 五、總結(jié) 狀態(tài)模式允許一個(gè)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為,對(duì)象看起來(lái)似乎修改了它的類,狀態(tài)模式主要解決的是當(dāng)控制一個(gè)對(duì)象狀態(tài)轉(zhuǎn)換的條件表達(dá)式過(guò)于復(fù)雜時(shí)的情況,把狀態(tài)的判斷邏輯轉(zhuǎn)移到表示不

    2024年02月16日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包