【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) ); } } }