デザインパターンのstateパターンへの取り組み方

デザインパターンにはたくさんの先人の知恵が詰まっています。

stateパターンもそのうちの一つ。

 

私が思うメリット

stateパターンのメリットは状態に関する分岐を一箇所にまとめることができる点だと考えています。

 

stateパターンを使用するためにすること

1振る舞いの整理

まずどのような振る舞いがあるか整理します。

実際の振る舞いは思っていたとおりの数だったでしょうか?

ここで言うところの振る舞いとは、人間の行動で例えると歩くとか走るとかになります。

2状態の整理

次は状態の整理をします。

状態は様々な要素の組み合わせによって決定されることになります。

表などに書き出し状態に名前をつけます。

人間のお昼ごはんの行動に例えると

・時間が12:00-14:00

・人がお昼ごはんを食べていない

・人が空腹を感じている

・食料を持っている

上の状態の時、持ち物のご飯を食べるという振る舞いを実行させるといったようなことです。

・時間が12:00-14:00

・人がお昼ごはんを食べていない

・人が空腹を感じている

・食料を持っていない

・冷蔵庫に食材がある

・キッチンがある

・キッチンが使用できる

・ご飯を作る元気がある

上の状態の時、食材を加工して料理をつくり昼ごはんを食べる振る舞いを実施するなどになります。

今回はふたつの振る舞い二つの状態という状態と振る舞いが二つでしたが、状態の方が少なくなることもあります。

3stateパターンに置き換える。

stateパターンに置き換えます。

実際はデータストアを用意したりしますが、そこは出来ていると仮定していきます。

置き換えのときは振る舞いを定数にしてswitch文を使用して振る舞いを振り分けるのが良いかなと思います。

 

stateパターンのクラス図やシーケンス図は割愛します。

wikipediaや有名な本とかがたくさんあるので探してみてください。