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
Object Oriented Training - Session 4
Search
hatelove
July 09, 2012
Technology
1
5.2k
Object Oriented Training - Session 4
里氏替換原則、最小知識原則、介面隔離原則、依賴反轉原則
hatelove
July 09, 2012
Tweet
Share
More Decks by hatelove
See All by hatelove
1. 在沙箱中開發
hatelove
12
3k
BDD in .NET - TDD 在實務上的最後一塊拼圖
hatelove
4
2.9k
OO training 基本原則整理
hatelove
2
5.3k
OO training homework 3 review and summary
hatelove
1
11k
OO training homework 2 review and summary
hatelove
1
4.6k
OO training homework 1 review and summary
hatelove
1
8.1k
Object Oriented Training - Session 3
hatelove
1
11k
Object Oriented Training - Session 2
hatelove
1
4.8k
Object Oriented Training - Session 1
hatelove
1
8.4k
Other Decks in Technology
See All in Technology
クラウド時代における一時権限取得
krrrr38
1
170
DX Improvement at Scale
ntk1000
3
290
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.4k
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
10k
Agentic Software Modernization - Back to the Roots (Zürich Agentic Coding and Architectures, März 2026)
feststelltaste
1
170
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
44k
AIエージェント・エコノミーの幕開け 〜 オープンプロトコルが変えるビジネスの未来 〜
shukob
0
100
新職業『オーケストレーター』誕生 — エージェント10体を同時に回すAgentOps
gunta
4
1.5k
Lookerの最新バージョンv26.2がやばい話
waiwai2111
1
160
「データとの対話」の現在地と未来
kobakou
0
1.3k
Kaggleで鍛えたスキルの実務での活かし方 競技とプロダクト開発のリアル
recruitengineers
PRO
1
160
Claude Cowork Plugins を読む - Skills駆動型業務エージェント設計の実像と構造
knishioka
0
270
Featured
See All Featured
A Soul's Torment
seathinner
5
2.4k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
460
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
370
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
51k
We Are The Robots
honzajavorek
0
190
The browser strikes back
jonoalderson
0
760
The Limits of Empathy - UXLibs8
cassininazir
1
240
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
Building Applications with DynamoDB
mza
96
6.9k
Building Adaptive Systems
keathley
44
2.9k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
Transcript
Trainer: Joey Chen Date: 2012/07/02 Object Oriented Training – Session
4
- 2 - 回顧 – OO三特性 封裝 繼承 多型
- 3 - 回顧 – 抽象 interface abstract
- 4 - 回顧 – SOLID S • 單一職責原則 O
• 開放封閉原則 L I D
SOLID
Liskov Substitution Principle 里氏替換原則
- 7 -
- 8 - Liskov Substitution Principle • 情況 – 當父類行為不符合子類需求,且子類無法
override 時 – 當子類繼承父類,卻無法正常替代父類運作時 • 規範繼承關係 – 確保多型可正常運作
SOLID
Least Knowledge Principle ( Law of Demeter ) 最少知識原則 (
狄米特法則 )
- 11 -
- 12 - Least Knowledge Principle • 規範封裝範圍 • 任何物件對外只開放
– 最少且缺一不可的資訊
SOLID
Interface Segregation Principle 介面隔離原則
- 15 - 哪一個方便使用
- 16 - Interface Segregation Principle • 介面的單一職責 – 介面也應該內聚,避免出現「胖」介面
• 規範依賴程度 – 一個物件對另一個物件的依賴,應建立在最小的介面上 – 不要強迫依賴了沒使用的方法,這是種介面污染 胖
SOLID
Dependency Inversion Principle 依賴反轉原則
- 19 - Dependency Inversion Principle • 依賴於抽象 • 高層模組不依賴於底層模組
– 都依賴於抽象
- 20 - 依賴於介面
- 21 - 結論 S O L L I D
- 22 - 回顧
- 23 - 作業 – 幫DAO穿衣服 • 原本需求 – Product資料異動時,需記錄log,查詢不用
– 對Product進行CRUD時,需檢查權限 • 重構需求 – 將權限驗證與log相關職責,從ProductDao獨立出來 – 讓ProductDao只處理CRUD的需求 • 需求異動 – 在測試環境時,不檢查權限與不記錄log – 檢查測試環境條件,請使用Context.IsTestEnvironment
- 24 - 原始程式 class diagram
- 25 - 重構的 class diagram
Thanks for your listening Q & A