Clean Architecture インターフェイス分離の原則
インターフェイス分離の原則
複数のユーザーが同じOPS
クラスを使用している。ここでは、User1
がop1
を使い、User2
がop2
を使い、User3
がop3
を使用しているものとする。
User1
のソースコードは、実際には使っていないop2
とop3
にも意図せずに依存。ここでいう「依存」とは、op2
のコードを変更したときに、User1
の再コンパイルと際デプロイが必要になるという意味。本来ならば、op2
のコードが変わっても気にする必要はない。
この問題を解決するには、各操作をインターフェイスに分離する。
User1
のソースコードはU1Ops
とop1
には依存しているが、OPS
には依存していない。つまり、OPS
に変更があったとしても、もしそれがUser1
に関係のない部分であれば、User1
の再コンパイルと再デプロイは不要になる。
インターフェイス分離の原則(ISP)とアーキテクチャとの関係
システムSを担当するアーキテクトが、あるフレームワークFをシステムに導入したいと考えたとする。このフレームワークFの作者は、フレームワークを特定のデータベースDのためだけに作っている。つまりSはFに依存しており、さらにFはDに依存していることになる。
問題のあるアーキテクチャ
FがDのすべての機能を使っているわけではなく、使っていない機能もある。Sにとって、それらの機能はどうでもいい。だが、Dのそのような部分が更新されると、Fは再デプロイすることになる。それはすなわち、Sも再デプロイしなければいけないということ。Dの一部の機能に障害が発生すると、それがFやSの障害の原因になってしまう可能性がある。
まとめ
必要としないお荷物を抱えたものに依存していると、予期せぬトラブルの元につながる。