Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Trainer: Joey Chen Date: 2012/07/02 Object Oriented Training – Session 4
Slide 2
Slide 2 text
- 2 - 回顧 – OO三特性 封裝 繼承 多型
Slide 3
Slide 3 text
- 3 - 回顧 – 抽象 interface abstract
Slide 4
Slide 4 text
- 4 - 回顧 – SOLID S • 單一職責原則 O • 開放封閉原則 L I D
Slide 5
Slide 5 text
SOLID
Slide 6
Slide 6 text
Liskov Substitution Principle 里氏替換原則
Slide 7
Slide 7 text
- 7 -
Slide 8
Slide 8 text
- 8 - Liskov Substitution Principle • 情況 – 當父類行為不符合子類需求,且子類無法 override 時 – 當子類繼承父類,卻無法正常替代父類運作時 • 規範繼承關係 – 確保多型可正常運作
Slide 9
Slide 9 text
SOLID
Slide 10
Slide 10 text
Least Knowledge Principle ( Law of Demeter ) 最少知識原則 ( 狄米特法則 )
Slide 11
Slide 11 text
- 11 -
Slide 12
Slide 12 text
- 12 - Least Knowledge Principle • 規範封裝範圍 • 任何物件對外只開放 – 最少且缺一不可的資訊
Slide 13
Slide 13 text
SOLID
Slide 14
Slide 14 text
Interface Segregation Principle 介面隔離原則
Slide 15
Slide 15 text
- 15 - 哪一個方便使用
Slide 16
Slide 16 text
- 16 - Interface Segregation Principle • 介面的單一職責 – 介面也應該內聚,避免出現「胖」介面 • 規範依賴程度 – 一個物件對另一個物件的依賴,應建立在最小的介面上 – 不要強迫依賴了沒使用的方法,這是種介面污染 胖
Slide 17
Slide 17 text
SOLID
Slide 18
Slide 18 text
Dependency Inversion Principle 依賴反轉原則
Slide 19
Slide 19 text
- 19 - Dependency Inversion Principle • 依賴於抽象 • 高層模組不依賴於底層模組 – 都依賴於抽象
Slide 20
Slide 20 text
- 20 - 依賴於介面
Slide 21
Slide 21 text
- 21 - 結論 S O L L I D
Slide 22
Slide 22 text
- 22 - 回顧
Slide 23
Slide 23 text
- 23 - 作業 – 幫DAO穿衣服 • 原本需求 – Product資料異動時,需記錄log,查詢不用 – 對Product進行CRUD時,需檢查權限 • 重構需求 – 將權限驗證與log相關職責,從ProductDao獨立出來 – 讓ProductDao只處理CRUD的需求 • 需求異動 – 在測試環境時,不檢查權限與不記錄log – 檢查測試環境條件,請使用Context.IsTestEnvironment
Slide 24
Slide 24 text
- 24 - 原始程式 class diagram
Slide 25
Slide 25 text
- 25 - 重構的 class diagram
Slide 26
Slide 26 text
Thanks for your listening Q & A