Slide 1

Slide 1 text

クリーンアーキテクチャ 達人に学ぶソフトウェアの構造と設計 9,10,11章 kazuki ijima

Slide 2

Slide 2 text

9,10,11章 リスコフの置換原則(LSP) インターフェース分離の原則(ISP) 依存関係逆転の原則(DIP)

Slide 3

Slide 3 text

リスコフの置換原則 「ここで望まれるのは、次に述べるような置換可能な性質である:s型のオブジェクトo1の 各々に対応するT型のオブジェクトo2が1つ存在し、Tを使って定義されたプログラムPに 対してo2の代わりにo1を使ってもPの振る舞いが変わらない場合、SはTの派生型であ ると言える」

Slide 4

Slide 4 text

リスコフの置換原則 置換できる例 図9-1 置換できない例 図9-2

Slide 5

Slide 5 text

リスコフの置換原則 継承の使い方の指針  ↓ インターフェースと実装に関するソフトウェア設計の原則

Slide 6

Slide 6 text

リスコフの置換原則 インターフェースが置換できない例 purplecab.com/driver/bob/.... /distination/ORD purplecab.com/driver/bob/.... /dist/ORD

Slide 7

Slide 7 text

インターフェース分離の原則 図10-1 Userと関係ないopの変更であっても、 再コンパイル・再デプロイが必要 図10-2 インターフェースを噛ませ、Userと関係ないopの変更であれば、 再コンパイル・再デプロイが不要

Slide 8

Slide 8 text

インターフェース分離の原則 必要としないモジュールに依存することは一般的に有害とされる 上位のアーキテクチャレベルにおいても同様 図10-3

Slide 9

Slide 9 text

依存関係逆転の原則 「ソースコードの依存関係が(具象ではなく)抽象だけを参照しているもの。  それが、最も柔軟なシステムである」 具象に依存するべきではない → 変化しやすいため   変化しづらいものへの依存は許容

Slide 10

Slide 10 text

依存関係逆転の原則 ● 変化しやすい具象クラスを参照しない ○ 抽象インターフェースを参照する ○ Abstract Factoryパターンを使う ● 変化しやすい具象クラスを継承しない ● 具象関数をオーバーライドしない ● 変化しやすい具象を名指しで参照しない

Slide 11

Slide 11 text

依存関係逆転の原理 Abstract Factory 具体的な実装には注目せず、インターフェースに注目する インターフェースだけを使って、具象をあつかう 処理 抽象 → 具象 依存性 具象 → 抽象 (※依存関係逆転の原則の名前の由来)

Slide 12

Slide 12 text

依存関係逆転の原理 具象コンポーネント