您的当前位置:首页>资讯 > 正文

【全球热闻】设计模式-状态模式(四)

  • 2023-05-05 15:56:25 来源:腾讯云


(相关资料图)

售出状态(SoldState)

售出状态是售货机发放商品的状态。如果用户插入了硬币,售货机将扣除商品价格,并切换到待机状态;如果用户按下按钮,售货机将提示用户需要先插入硬币;如果用户尝试发放商品,售货机将发放商品。

public class SoldState implements State {    private VendingMachine vendingMachine;    public SoldState(VendingMachine vendingMachine) {        this.vendingMachine = vendingMachine;    }    @Override    public void insertCoin() {        System.out.println("Please wait, we"re already giving you a product.");    }    @Override    public void pressButton() {        System.out.println("You have not inserted a coin yet.");    }    @Override    public void dispense() {        if (vendingMachine.getCount() > 0) {            vendingMachine.setCount(vendingMachine.getCount() - 1);            System.out.println("Product dispensed.");            if (vendingMachine.getCount() == 0) {                vendingMachine.setCurrentState(new NoStockState(vendingMachine));            } else {                vendingMachine.setCurrentState(new IdleState(vendingMachine));            }        } else {            vendingMachine.setCurrentState(new NoStockState(vendingMachine));        }    }}

在SoldState类中,我们实现了State接口中的三个行为方法:插入硬币方法insertCoin()、按下按钮方法pressButton()和发放商品方法dispense()。如果用户插入了硬币,售货机将扣除商品价格,并切换到待机状态(IdleState);如果用户按下按钮,售货机将提示用户需要先插入硬币;如果用户尝试发放商品,售货机将发放商品,并切换到待机状态(IdleState)或无库存状态(NoStockState)。

标签:

推荐阅读

【全球热闻】设计模式-状态模式(四)

售出状态是售货机发放商品的状态。如果用户插入了硬币,售货机将扣除商品价格,并切换到待机状态;如果用户

山西忻州重大刑事案件嫌犯在太原某旅馆被抓获!

5月4日晚,山西省忻州市定襄县公安局发布警情通报:2023年5月1日15时许,定襄县宏道镇西社村发生一起重大刑

世界观焦点:TechInsights:2023年Q1全球智能手机出货量2.691亿台,同比下降14%

App5月5日消息,据TechInsights最新研究指出,2023年Q1,全球智能手机出货量同比下降14%,至2 691亿部。三

锨的拼音(锨)_天天热门

锨的拼音,锨这个很多人还不知道,现在让我们一起来看看吧!1、xian一声gao三声xian一声gao三声xian

出行提醒!5月7日,武汉市武昌这些路段实行交通管制

出行提醒!5月7日,武汉市武昌这些路段实行交通管制---体育街→彭刘杨路→楚善街→张之洞路→体育街合围区

猜您喜欢

【版权及免责声明】凡注明"转载来源"的作品,均转载自其它媒体,转载目的在于传递更多的信息,并不代表本网赞同其观点和对其真实性负责。亚洲文化网倡导尊重与保护知识产权,如发现本站文章存在内容、版权或其它问题,烦请联系。 联系方式:8 86 239 5@qq.com,我们将及时沟通与处理。

头条