状況
- 複数のクライアントが、あるクラスの一部の機能を使っている
対処
- 共通部分をインターフェースとして抽出する
メリット
各クライアント(関数など)がどの機能を必要としているのかが明確になる
別の機能を持たせた異なる種類のクライアントを作成するときに、インターフェースを実装するだけでよくなる。これによって、共通部分の修正にかかるコストが圧倒的に少なくなる
手順
空のインターフェースを作成する
共通部分をそのインターフェースに宣言する
関係するクラスで、そのインターフェースの実装を宣言する
クライアントの型宣言を、そのインターフェースを使うように修正する
楽天ブックス: リファクタリング新装版 - 既存のコードを安全に改善する - マーチン・ファウラー - 9784274050190 : 本