インタフェース分離の原則
- クライアントに、クライアントが利用しないメソッドへの依存を強制してはならない
- 利用しないメソッドに依存してしまうとクライアントはそういったメソッドへの変更の影響を受けやすくなる
- メソッドを利用しないのであれば、クライアントは本来その変更に無関係なはずだが、それに依存していると不用意に影響を受けてしまう
- 利用していないメソッドに依存していると、他のクライアントがクラスに強いる変更によって、そのクラスに依存している自分まで巻き込まれてしまう
- 不本意な結び付きをできるだけ避けるために、インタフェースを分離する
インタフェースを分離する
- それぞれのクライアントが実際に利用するメソッドだけに依存する
- 関連性のあるインタフェースはグループ化
- 利用しないメソッドとの依存を断つ
- インタフェースにあれもこれも詰め込みすぎない
結論
- 「太った」クラスは、それを利用するクライアント同士が有害な関連性を持つ原因となる
- あるクライアントが「太った」クラスに変更を強いると、他の全てのクライアントに影響が及んでしまう
- 有害な関連性を断ち切るには、各クライアントは実際に自分が利用するメソッドだけに依存する
- 「太った」クラスのインタフェースを各クライアントのニーズに合うようにインタフェースを細かくグループ化すれば可能
- クライアント毎に特化したインタフェースには、それを利用するクライアントやクライアントグループだけが利用するメソッドだけを宣言
- 後で「太った」クラスを構築したければ、クライアント毎に特化したインタフェースを全て継承し、必要なインタフェースを実装
- このような方針をとることで、クライアントは自分が利用しないメソッドとの依存関係を断ち切り、クライアント同士の同士の独立性を保てる