说明
某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且每次仅售出一包纸巾。
纸巾售卖机的状态图如下图所示。
采用状态(State)模式来实现该纸巾售卖机,其类图如下图所示。
其中类State为抽象类,定义了投币、退币、出纸巾等方法接口。
类SoldState、SoldOutState、NoQuarterState和HasQuarterState分别对应上图中纸巾售卖机的4种状态:售出纸巾、纸巾售完、没有投币、有2元钱。
Java代码
import java.util.*; //把util这个包下的全部类导入到程序中
//*表示的是通配符,包括util的所有类
interface State {
//定义算法的公共接口State
public void insertQuarter(); //投币
public void ejectQuarter(); //退币
public void turnCrank(); //按下“出纸巾”按钮
public void dispense(); //出纸巾
}
class TissueMachine {