State/Strattegyによるタイプコード置き換えを13年前に振り返る
replace typecode with state strategy
経緯
種別が混雑してきた
- とあるPJで種別が煩雑になってきた
手順
状態オブジェクトクラス作成
タイプコードをカプセル化した状態オブジェクト作成
- ステートパターン
タイプコード毎に状態オブジェクトのサブクラスを作成
- 各ステータスのクラス
タイプコードを取得するメソッド作成
- GETステートの抽象化
サブクラスでは抽象メソッドをオーバイライドしてタイプコードを返す
- GETステートの実装
状態オブジェクトの使用(タイプコードの参照側)
タイプコードの参照から状態オブジェクトのGetステート参照に置換
- サブクラスのGetステートが呼ばれる
タイプコード変更を状態オブジェクトのチェンジメソッドに置換
- 状態変更は直接させない