状态抽象类
public abstract class State {//状态抽象类
protected TissueMachine tissueMachine;
public void insertQuarter() {//投币
System.out.println("No Implements");
}
public void ejectQuarter() {//退币
System.out.println("No Implements");
}
public void turnCrank() {//按下“出纸巾”按钮
System.out.println("No Implements");
}
public void dispense() {//出纸巾
System.out.println("No Implements");
}
}
有纸巾类
public class HasQuarterState extends State {
@Override
public void ejectQuarter() {
tissueMachine.setState(tissueMachine.getNoQuarterState());
}
}
没有纸巾类
public class NoQuarterState extends State {
@Override
public void insertQuarter() {
tissueMachine.setState(tissueMachine.getHasQuarterState());
}
}
售完类
public class SoldOutState extends State {
@Override
public void dispense() {
if (tissueMachine.getCount() > 0) {
tissueMachine.setState(tissueMachine.HasQuarterState());
} else {
tissueMachine.setState(tissueMachine.getSoldOutState());
}
}
}
售卖类
public class SoldState extends State {
@Override
public void insertQuarter() {
tissueMachine.setState(this);
}
}
纸巾自动售货机类
@Getter
@Setter
public class TissueMachine {//纸巾售货机类
private State soldOutState, noQuarterState, hasQuarterState, soldState, state;
int count = 0;//纸巾数
public TissueMachine(int count) {
this.count = count;
}
}