abstract class State {
protected TissueMachine tissueMachine;
public void insertQuarter()//投币
{
}
public void ejectQuarter()//退币
{
}
public void turnCrank() //按下"出纸巾"按钮
{
}
public void dispense() //出纸巾
{
}
public abstract void printState();
}
class TissueMachine {
private State soldOutState, noQuarterState, hasQuarterState, soldState, state;
private int count; //纸巾数
public TissueMachine(int numbers) {
count = numbers;
soldOutState = new SoldOutState(this);
noQuarterState = new NoQuarterState(this);
hasQuarterState = new HasQuarterState(this);
soldState = new SoldState(this);
state = noQuarterState;
}
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;
}
public void setState(State state) {
this.state = state;
}
public void printState() {
this.state.printState();
}
public void insertQuarter()//投币
{
this.state.insertQuarter();
}
public void ejectQuarter()//退币
{
this.state.ejectQuarter();
}
public void turnCrank() //按下"出纸巾"按钮
{
this.state.turnCrank();
}
public void dispense() //出纸巾
{
this.state.dispense();
}
}
/**
此部分为本题缺失的代码,需要你完成并提交!
**/
java复制代码
public class Main {
public static void main(String[] args) {
TissueMachine tissueMachine = new TissueMachine(10);
tissueMachine.printState();
tissueMachine.insertQuarter();
tissueMachine.printState();
tissueMachine.ejectQuarter();
tissueMachine.printState();
tissueMachine.insertQuarter();
tissueMachine.printState();
tissueMachine.turnCrank();
tissueMachine.printState();
tissueMachine.dispense();
tissueMachine.printState();
}
}
请完成缺失的代码并提交!
输入描述
无
输出描述
NoQuarterState
HasQuarterState
NoQuarterState
HasQuarterState
SoldState
NoQuarterState
答案
java复制代码
class HasQuarterState extends State {
private TissueMachine tissueMachine;
public HasQuarterState(TissueMachine tissueMachine){
this.tissueMachine=tissueMachine;
}
public void ejectQuarter()//退币
{
tissueMachine. setState(tissueMachine. getNoQuarterState());
}
public void turnCrank() //按下"出纸巾"按钮
{
tissueMachine. setState(tissueMachine. getSoldState());
}
public void printState(){
System.out.println("HasQuarterState");
}
}
class NoQuarterState extends State{
private TissueMachine tissueMachine;
public NoQuarterState(TissueMachine tissueMachine){
this.tissueMachine=tissueMachine;
}
public void insertQuarter()//投币
{
tissueMachine. setState(tissueMachine. getHasQuarterState());
}
public void printState(){
System.out.println("NoQuarterState");
}
}
class SoldState extends State{
private TissueMachine tissueMachine;
public SoldState(TissueMachine tissueMachine){
this.tissueMachine=tissueMachine;
}
public void dispense() //出纸巾
{
if(tissueMachine.getCount()>0)
{
tissueMachine. setState(tissueMachine. getNoQuarterState());
}
}
public void printState(){
System.out.println("SoldState");
}
}
class SoldOutState extends State{
private TissueMachine tissueMachine;
public SoldOutState(TissueMachine tissueMachine){
this.tissueMachine=tissueMachine;
}
public void printState(){
System.out.println("SoldOutState");
}
}