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
84
達人に学ぶソフトウェアの構造と設計 19,20章
kazuki_ijima_ym
0
74
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Raft: Consensus for Rubyists
vanstee
140
7k
Side Projects
sachag
455
42k
Rails Girls Zürich Keynote
gr2m
94
14k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
130
19k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
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 具体的な実装には注目せず、インターフェースに注目する インターフェースだけを使って、具象をあつかう 処理 抽象 → 具象 依存性
具象 → 抽象 (※依存関係逆転の原則の名前の由来)
依存関係逆転の原理 具象コンポーネント