Skip to content

Clean Architecture 依存関係逆転の原則

  • 変化しやすい具象クラスを参照しない。

 その代わりに抽象インターフェイスを参照すること。静的型付け言語であっても動的型付け言語であっても、このルールは守る。これはオブジェクトの生成時にも大きな制約となる。一般的には、Abstract Factoryパターンを使用するしかない。

  • 変化しやすい具象クラスを継承しない。

 静的型付け言語における継承は、ソースコードの関係のなかで最も強力かつ厳格なもの。そのため、十分に注意しながら使う必要がある。動的型付け言語であればそれほど問題にならないが、継承が一種の依存関係であることは変わらないので、気をつけて使うのが賢明。

  • 具象関数をオーバーライドしない。

 具象関数はソースコードの依存を要求することが多い。関数をオーバーライドしても依存関係を排除することはできず、そのまま継承することになる。依存をうまく管理するには、元の関数を抽象関数にして、それに対する複数の実装を用意しなければいけない。

  • 変化しやすい具象を名指しで参照しない。

依存関係逆転の原則(DIP)を言い換えたもの。

Factory

 上記のルールに従おうとすると、具象オブジェクトを生成する際に特別な処理が必要になる。事実上すべての言語において、オブジェクトの生成にはオブジェクトの具象定義を含むソースコードへの依存が避けられない。