サブクラスによるタイプコードの置き換え
概要
タイプコードごとにオブジェクトが異なる振る舞いをしているときに、タイプコードをサブクラスに置き換えて多様的なメソッドに置き換える
リファクタリング時期
異なる振る舞いが switch 文で振り分けられているのを発見したとき
大抵この場合は switch 文が蔓延る (<<コードの臭い : 重複するコード>> )
手順
タイプコードに対応したサブクラスを作る
タイプコードを自己カプセル化する
タイプコードを元にインスタンスを作成している場合は Factory Method を作る
タイプコードのそれぞれの値ごとにサブクラスを作る
コンパイルしてテスト
不要なフィールドを削除する
タイプコードのフィールドを削除する
元のクラスのタイプコードの getter を abstract メソッドにする
コンパイルしてテストする
#refactoring-chapter8