
424
10
章
エクササイズの答え
public void refill() {
gumballMachine.setState(gumballMachine.getNoQuarterState());
}
ガムボールマシンに補充するには、
State
インタフェースに
refill()
メソッドを追加
します。状態クラスはこのメソッドを実装しなければいけません。
SoldOutState
を除く状態では、このメソッドは何もしません。
SoldOutState
では、
refill()
は
NoQuarterState
に遷移します。また、ガムボール数を加え、現在の状態の
refill()
メソッドを呼び出す
refill()
メソッドを
GumballMachine
に追加します。
void refill(int count) {
this.count += count;
System.out.println("
ガムボールマシンに補充しました。新たなガムボール数:
" + this.count);
state.refill();
}
このメソッドを
SoldOutState
に
追加します。
そして、このメソッドを
GumballMachine
クラスに追加します。
パターン
説明
State
Strategy
Template
Method
交換可能な振る舞いをカプセル化し、委
譲を使って使用すべき振る舞いを決める。
サブクラスがアルゴリズムの手順
の実装方法を決める。
状態ベースの振る舞いをカプセル化
し、振る舞いを現在の状態に委譲する。
パターンとそれに対応する説明を線で結んでください。 ...