
you are here
413
10
章
State
パターン
ブラボ ー!
君たち最高
だよ。この新しいゲームのおかげでうちの
売上はもう絶好調だよ。うちはソーダマシン
も製造しているんだが、側面にスロットマシン
のアームを取り付けて、ソーダマシンもゲーム
にできないかと考えている。うちはガムボール
マシンで
4
年間ギャンブルをしてきたんだ。
ここで止める手はないだろう?
健全性チェック
Mighty Gumball
社の
CEO
にも健全性チェックが必要でしょうが、ここで話した
いのはそのことではありません。この優れたバージョンのマシンを出荷する前に、
GumballMachine
の改善したいいくつかの側面について考えてみましょう。
●
Sold
状態と
Winning
状態に多くの重複コードがあるので、整理し
たいと思います。どうすればよいでしょうか?
State
を抽象クラス
に入れて、メソッドのデフォルトの振る舞いを組み込むことができ
ます。結局、「すでに
25
セントを投入しています」などのエラーメッ
セージは客からは見えません。したがって、すべての「エラー応答」
の振る舞いは、抽象クラスから継承した汎用的なものにできます。
●
25
セントが未投入のままハンドルを回したとしても、
dispense()
メ
ソッドは必ず呼び出されます。マシンが正しく動作していれば、正
しい状態でなければガムボールは出ないので、
turnCrank()
がブー
ル値を返すようにするか例外を導入すれば、簡単に修正できます。
どちらが優れた解決策だと思いますか? ...