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/06/18 Object Oriented Training – Session 3
Slide 2
Slide 2 text
- 2 - 高內聚、低耦合
Slide 3
Slide 3 text
- 3 - 內聚
Slide 4
Slide 4 text
- 4 - 耦合
Slide 5
Slide 5 text
- 5 - 高內聚、低耦合
Slide 6
Slide 6 text
- 6 - 高內聚、低耦合
Slide 7
Slide 7 text
SOLID
Slide 8
Slide 8 text
Single Responsibility Principle (SRP) 單一職責原則
Slide 9
Slide 9 text
- 9 - 多職責
Slide 10
Slide 10 text
- 10 - 單一職責 • 3 layer • MVC
Slide 11
Slide 11 text
- 11 - 單一職責 • 避免一個class擁有多個職責 • 避免一個職責散落在多個class中
Slide 12
Slide 12 text
SOLID
Slide 13
Slide 13 text
Open Closed Principle (OCP) 開放封閉原則
Slide 14
Slide 14 text
- 14 - 對擴充開放,對修改封閉
Slide 15
Slide 15 text
- 15 - 開放封閉原則 • 判斷方式 – 當新增或修改需求時,可以新增class,而使用場景不需改變程 式,即符合開放封閉原則 – 當多一種新的可能時,在同一個class中(非工廠類別),使用if else來修改舊有邏輯,即違反開放封閉原則
Slide 16
Slide 16 text
- 16 - 案例 – 高內聚、低耦合
Slide 17
Slide 17 text
- 17 - 回顧
Slide 18
Slide 18 text
- 18 - 結論 • 抽象思考,釐清職責 • 新增class進行抽換,而不是修改、擴充舊的class • 好的Class特色 – 乾淨、清楚、簡單 – 容易組合與抽換
Slide 19
Slide 19 text
- 19 - 結論 • 高內聚、低耦合為設計目的 • 原則為設計精神 – 符合原則即可達到目的 • Design patterns – 針對不同需求 – 滿足這些原則的best practice – 達到高內聚、低耦合的目的
Slide 20
Slide 20 text
- 20 - 作業 – 重構 • 說明 – 決定便利商店的種類,未來可能不是從config讀取 – 資料來源可能會改變 – 未來可能會新增其他便利商店種類 • 注意 – 請將每個Class的職責說明,記錄於Class的summary document 上 – 請將職責獨立的Class,放到Library中,除非該Class是專屬於網 站的職責 – 請參考Selenium的Test Cases
Slide 21
Slide 21 text
- 21 -
Slide 22
Slide 22 text
Thanks for your listening Q & A