前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式-状态模式(二)

设计模式-状态模式(二)

原创
作者头像
堕落飞鸟
发布2023-05-04 16:05:43
2561
发布2023-05-04 16:05:43
举报
文章被收录于专栏:飞鸟的专栏飞鸟的专栏

状态模式的示例

为了更好地理解状态模式的实现,我们可以以一个简单的售货机为例。假设有一个售货机,它有三种状态:待机状态(IdleState)、售出状态(SoldState)和赠品状态(WinnerState)。当用户投入硬币时,售货机会根据当前状态的不同做出相应的响应。

下面是状态模式的具体实现。

上下文(Context)

我们定义一个VendingMachine类作为上下文类,它包含一个状态对象和一个状态切换方法。

代码语言:javascript
复制
public class VendingMachine {
    private State currentState;
    private int count;

    public VendingMachine(int count) {
        this.count = count;
        currentState = new IdleState(this);
    }

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

    public void insertCoin() {
        currentState.insertCoin();
    }

    public void pressButton() {
        currentState.pressButton();
    }

    public void dispense() {
        currentState.dispense();
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}

在VendingMachine类中,我们定义了一个当前状态对象currentState和一个商品数量count。在VendingMachine类的构造函数中,我们将当前状态设置为待机状态(IdleState)。VendingMachine类还定义了一些方法,包括状态切换方法setCurrentState()、插入硬币方法insertCoin()、按下按钮方法pressButton()、发放商品方法dispense()和获取商品数量方法getCount()。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 状态模式的示例
    • 上下文(Context)
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档