リファクタリング技法
ここではCode Smellを解消するために参考となるリファクタリング技法や、その他参考になりそうな概念を紹介していこうと思います。
リファクタリングに関してはこの辺りの書籍が参考になると思います。
リファクタリング第2版

レガシーコード改善ガイド

関連するリファクタリング技法
Dealing with Generalisation
Replace Inheritance with Delegation
Replace Inheritance with Delegation スーパークラスの一部しか使っていないようなサブクラスがある場合、(あるいは、スーパークラスのデータをサブクラスに引き継ぐのが不適切な場合) サブクラスとして定義したクラスをスーパークラスのフィールドとして定義し、サブクラスのメソッドをスーパークラスに委譲(delegate)しましょう。さらに、継承関係を排除しましょう。
関連するCode Smell