
398
10
章
ガムボールマシンの
State
オブジェクト
GumBallMachine
では、スタティックな整
数ではなく新しいクラスを使うようにコード
を更新します。このコードはよく似ています
が、修正前のクラスでは整数を使っていたの
に対し、新しいクラスではオブジェクトを
使っている点が異なります。
State
クラスを完了させる前に、ガムボールマシンを作り直しましょ
う。そうすれば、ガムボールマシンがどのようにすべてのクラスを組
み合わせているのか確認できます。まずは状態関連のインスタンス変
数から始め、整数ではなく状態オブジェクトを使うようにコードを変
更します。
ガムボールマシンを書き直す
修正前のコード
修正後のコード
コンストラクタですべての
State
オブ
ジェクトを作成して代入します。
このコードでは、整数で
はなく
State
オブジェク
トを保持します。
public class GumballMachine {
final static int SOLD_OUT = 0;
final static int NO_QUARTER = 1;
final static int HAS_QUARTER = 2;
final static int SOLD = 3;
int state = SOLD_OUT;
int count = 0;
public class GumballMachine {
State soldOutState;
State noQuarterState;
State hasQuarterState; ...