Stateパターン

      2016/10/12

Stateパターンは状態を表現する際に用いることが多く、多態性(ポリモーフィズム(Polymorphism))と言います。
多態性はオブジェクト指向言語でコーディングする上で非常に便利な設計手法です。

状態を管理するのに、良く見かける方法がこちら。
下記サンプルソースでは職業を状態として用いてます。
※値をemunなどで定義していない、などはここでは無視して下さい。

多態性使用前

この場合、メソッドで状態(職業)毎の処理が増えるほど、条件文を記述しなければなりません。
ここで登場するのが、多態性です。
割とポピュラーなのですが、技術者のレベルが低い環境だと前述の様な条件分岐ばかりなんですよね。

多態性使用後

ベース状態クラス

各状態クラス

使用クラス

多態性使用後では使用クラスがスッキリとした記述になりました!

「でも、各状態クラスを沢山書かないと駄目だし、結局面倒じゃん…」

って思われるかもしれません。
しかし、各状態クラスでは自分の処理だけ書けばいいので、実装もシンプルですし、単体試験が大幅に減るので最終的な工数はグっと減ります。
また、1ファイルあたりや1メソッドあたりのライン数を減らせるため、可読性も上がります。
更に言えば、状態毎に担当者を割り振ることも容易になります。
後から状態を追加するのも簡単です。

 - 設計 ,