美文网首页
《设计模式》之状态模式

《设计模式》之状态模式

作者: 魅猫之 | 来源:发表于2020-06-13 14:03 被阅读0次

定义:

意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。
主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。
何时使用:代码中包含大量与对象状态有关的条件语句。

状态模式在游戏设计里非常常见,比如说一个玩家,体力值不同,拥有不同的行为,精力充沛的时候,可以打出高的输出,防御也很有效;体力低时,输出很低,并且防御能力下降。

代码:

// 玩家的行为接口
interface IStateBehavior {
    attack: () => void,
    defence: () => void,
}

// 元气满满的状态
class FullEnergyStateBehavior implements IStateBehavior {

    public attack() {
        console.log('精力充沛,发动致命一击!')
    }

    public defence() {
        console.log('全力防御,毫发无伤!')
    }

}

// 疲惫不堪的状态
class TiredStateBehavior implements IStateBehavior {

    public attack() {
        console.log('毫无力气,挠痒痒~')
    }

    public defence() {
        console.log('反应迟钝,颤颤巍巍,毫无招架之力~')
    }

}

// 玩家
class Player {

    private HP: number
    
    public stateBehavior: IStateBehavior
    
    constructor() {
        this.HP = 100
        this.stateBehavior = new FullEnergyStateBehavior()
    }

    public setHP(hp: number) {
        this.HP = hp
        if (this.HP > 70) {
            this.stateBehavior = new FullEnergyStateBehavior()
            console.log('当前状态为精力充沛')
        } else {
            this.stateBehavior = new TiredStateBehavior()
            console.log('当前状态为疲惫不堪')
        }
    }
}

// 初始化精力充沛的玩家
const player = new Player()
player.setHP(100)
player.stateBehavior.attack()
player.stateBehavior.defence()

// 玩家受到攻击,HP剩余60
player.setHP(60)
player.stateBehavior.attack()
player.stateBehavior.defence()

输出结果:

[LOG]: 当前状态为精力充沛 
[LOG]: 精力充沛,发动致命一击! 
[LOG]: 全力防御,毫发无伤! 
[LOG]: 当前状态为疲惫不堪 
[LOG]: 毫无力气,挠痒痒~ 
[LOG]: 反应迟钝,颤颤巍巍,毫无招架之力~ 

相关文章

  • Java设计模式——状态模式

    Java设计模式之状态模式 这期分享一个行为模式中的状态模式,状态模式是行为模式中的最后几个模式了。希望多多关注交...

  • 设计模式之状态设计模式

    一、浩言 人静而后安,安而能后定,定而能后慧,慧而能后悟,悟而能后得。 二、背景 开年,看了看最近网上传的《阿里巴...

  • 设计模式-状态模式

    设计模式-状态模式 设计模式 状态模式的关键是区分事物内部的状态

  • 设计模式之状态模式

    状态模式 State Intro 状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来...

  • 设计模式之状态模式

    1. 定义 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。它是一种对象行为型模式。 2....

  • 设计模式之状态模式

    状态模式的定义 状态模式的定义如下:Allow an object to alter its behavior w...

  • 设计模式之状态模式

    在开发过程中,我们经常会遇到很多if-else的判断,有的会有很多层,当然也不是说所有的涉及到if-else判断的...

  • 设计模式之状态模式

    UML图: 没怎么完全理解,略过。

  • 设计模式之状态模式

    状态模式 汽车人接口 变形金刚的汽车型状态 变形金刚的战斗型状态 用来管理切换状态的类 客户端 状态模式的场景一个...

  • 设计模式之状态模式

    写在前面 最近写屏幕式智能家电的时候,总是需要处理各种电器状态,比如电源开启的情况下才可以进行开风机操作,风力档位...

网友评论

      本文标题:《设计模式》之状态模式

      本文链接:https://www.haomeiwen.com/subject/bhwatktx.html