Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
達人に学ぶソフトウェアの構造と設計 9,10,11章
Search
kazuki
October 04, 2020
0
220
達人に学ぶソフトウェアの構造と設計 9,10,11章
達人に学ぶソフトウェアの構造と設計 9,10,11章
kazuki
October 04, 2020
Tweet
Share
More Decks by kazuki
See All by kazuki
達人に学ぶソフトウェアの構造と設計 29,30章
kazuki_ijima_ym
0
87
達人に学ぶソフトウェアの構造と設計 19,20章
kazuki_ijima_ym
0
77
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
Music & Morning Musume
bryan
46
6.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
How STYLIGHT went responsive
nonsquared
100
5.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Mobile First: as difficult as doing things right
swwweet
224
9.9k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
A designer walks into a library…
pauljervisheath
207
24k
RailsConf 2023
tenderlove
30
1.2k
Transcript
クリーンアーキテクチャ 達人に学ぶソフトウェアの構造と設計 9,10,11章 kazuki ijima
9,10,11章 リスコフの置換原則(LSP) インターフェース分離の原則(ISP) 依存関係逆転の原則(DIP)
リスコフの置換原則 「ここで望まれるのは、次に述べるような置換可能な性質である:s型のオブジェクトo1の 各々に対応するT型のオブジェクトo2が1つ存在し、Tを使って定義されたプログラムPに 対してo2の代わりにo1を使ってもPの振る舞いが変わらない場合、SはTの派生型であ ると言える」
リスコフの置換原則 置換できる例 図9-1 置換できない例 図9-2
リスコフの置換原則 継承の使い方の指針 ↓ インターフェースと実装に関するソフトウェア設計の原則
リスコフの置換原則 インターフェースが置換できない例 purplecab.com/driver/bob/.... /distination/ORD purplecab.com/driver/bob/.... /dist/ORD
インターフェース分離の原則 図10-1 Userと関係ないopの変更であっても、 再コンパイル・再デプロイが必要 図10-2 インターフェースを噛ませ、Userと関係ないopの変更であれば、 再コンパイル・再デプロイが不要
インターフェース分離の原則 必要としないモジュールに依存することは一般的に有害とされる 上位のアーキテクチャレベルにおいても同様 図10-3
依存関係逆転の原則 「ソースコードの依存関係が(具象ではなく)抽象だけを参照しているもの。 それが、最も柔軟なシステムである」 具象に依存するべきではない → 変化しやすいため 変化しづらいものへの依存は許容
依存関係逆転の原則 • 変化しやすい具象クラスを参照しない ◦ 抽象インターフェースを参照する ◦ Abstract Factoryパターンを使う • 変化しやすい具象クラスを継承しない
• 具象関数をオーバーライドしない • 変化しやすい具象を名指しで参照しない
依存関係逆転の原理 Abstract Factory 具体的な実装には注目せず、インターフェースに注目する インターフェースだけを使って、具象をあつかう 処理 抽象 → 具象 依存性
具象 → 抽象 (※依存関係逆転の原則の名前の由来)
依存関係逆転の原理 具象コンポーネント