阅读下列说明和JAVA代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态图如图6-1所示。 采用状态(State)模式来实现该纸巾售卖机,得到如图6-2所示的类图。其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应图6-1中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。 【Java代码】 import javA.util.*; interface State { public void insertQuarter(); //投币 public void ejectQuarter(); //退币 public void turnCrank(); //按下“出纸巾”按钮 public void dispense(); //出纸巾 } class TissueMachine { (1) soldOutState, noQuarterState, hasQuarterState, soldState, state; state = soldOutState; int count = 0; //纸巾数 public TissueMachine(int numbers) { /* 实现代码省略 */ } public State getHasQuarterState() { return hasQuarterState; } public State getNoQuarterState() { return noQuarterState; } public State getSoldState() { return soldState; } public State getSoldOutState() { return soldOutState; } public int getCount() { return count; } // 其余代码省略 }
class NoQuarterState implements State { TissueMachine tissueMachine; public void insertQuarter() { tissueMachine.setState( (2) ); } //构造方法以及其余代码省略 } class HasQuarterState implements State { TissueMachine tissueMachine; public void ejectQuarter() { tissueMachine.setState( (3) ); } //构造方法以及其余代码省略 } class SoldState implements State { TissueMachine tissueMachine; public void dispense() { if(tissueMachine.getCount() > 0) { tissueMachine.setState( (4) ); } else { tissueMachine.setState( (5) ); } } }