久久99国产亚洲高清观看首页 ,亚洲国产激情一区二区三区,欧洲精品免费一区二区三区,国产10000部拍拍拍免费视频

環(huán)球新消息丨設(shè)計(jì)模式-狀態(tài)模式(四)

來源:騰訊云     時(shí)間:2023-05-05 14:40:20


【資料圖】

售出狀態(tài)(SoldState)

售出狀態(tài)是售貨機(jī)發(fā)放商品的狀態(tài)。如果用戶插入了硬幣,售貨機(jī)將扣除商品價(jià)格,并切換到待機(jī)狀態(tài);如果用戶按下按鈕,售貨機(jī)將提示用戶需要先插入硬幣;如果用戶嘗試發(fā)放商品,售貨機(jī)將發(fā)放商品。

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類中,我們實(shí)現(xiàn)了State接口中的三個(gè)行為方法:插入硬幣方法insertCoin()、按下按鈕方法pressButton()和發(fā)放商品方法dispense()。如果用戶插入了硬幣,售貨機(jī)將扣除商品價(jià)格,并切換到待機(jī)狀態(tài)(IdleState);如果用戶按下按鈕,售貨機(jī)將提示用戶需要先插入硬幣;如果用戶嘗試發(fā)放商品,售貨機(jī)將發(fā)放商品,并切換到待機(jī)狀態(tài)(IdleState)或無庫存狀態(tài)(NoStockState)。

標(biāo)簽:

精彩放送
房產(chǎn)
頭條