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