mike-neckのブログ

Java or Groovy or Swift or Golang

クリーンアーキテクチャーの読書メモ(9)

§10 ISP: インターフェース分離の原則

  • 必要としない機能をもつモジュールに依存しない
  • どうしても必要な場合はインターフェースを間に挟む

§11 DIP: 依存関係逆転の原則

  • ソースコードの依存関係が具象ではなく抽象を参照しているのが最も柔軟
  • 安定した抽象に依存、変化しやすい具象に依存しない
    • 変化しやすい具象を参照しない。参照したい場合には AbstractFactory パターンなどで直接参照を避ける
    • 変化しやすい具象クラスを継承しない
      • クラス等の関係性の中で最も強い関係
    • 具象メソッドをオーバーライドしない
      • もとの依存は排除できない
  • インターフェースと実装クラス、 AbstractFactoryFactoryImpl の地点にて依存関係(矢印の向き)が逆転するので依存関係逆転の原則

f:id:mike_neck:20190325010841p:plain
インターフェースの下で依存関係(矢印の向き)が逆転する