阅读下列说明和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) soldOutStater 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) );