設計模式筆記---1.面向對象設計原則

面向對象設計原則

依賴倒置原則(DIP)

  • 高層模塊(穩定)不該該依賴於底層模塊(變化),兩者都應該依賴於抽象(穩定)
  • 抽象(穩定)不該該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定)。

開放封閉原則(OCP)

  • 對擴展開放,對更改封閉
  • 類模塊應該是可擴展,可是不可修改。

單一職責原則(SPR)

  • 一個類應該僅有一個引發它變化的緣由。
  • 變化的方向隱含着類的責任。

Liskov 替換原則(LSP)

  • 子類必須能替換他們的基類(is-a)
  • 繼承表達類型抽象。

接口隔離原則(ISP)

  • 不該該強迫客戶程序依賴他們不用的函數。
  • 接口應該小而完備。

優先使用對象組合,而不是類繼承

  • 類繼承一般爲 "白箱複用",對象組合一般爲 "黑箱複合"。
  • 繼承在某種程度上破壞了封裝性,基類和派生類耦合度高。
  • 對象組合則只要求組合的對象具備良好定義的接口,耦合度低。

封裝變化點

  • 使用封裝來建立對象之間的分界層,讓設計者能夠在分界層的一側進行修改,而不會對另外一側產生不良的影響,從而實現層次間的鬆耦合。

針對接口編程,而不是針對實現編程

  • 不將變量類型聲明爲某個特定的具體類,而是聲明爲某個接口。
  • 客戶程序無需獲知對象的具體類型,只須要知道對象所具備的接口。
  • 減小系統中各部分的依賴關係,從而實現 "高內聚低耦合" 的類型設計方案。

設計經驗

設計習語 (Design Idioms)

  • Design Idioms 描述與特定編程語言相關的底層模式,技巧,慣用法。

設計模式 (Design Patterns)

  • Design Patterns 主要描述的是:類與相互通訊的對象之間的組織關係,包括他們的角色、職責、協做方式等。

架構模式 (Architectural Patterns)

  • Architectural Patterns 描述系統中的與基本結構組織關係密切的高層模式,包括子系統劃分,職責,以及如何組織它們之間關係的規則。
相關文章
相關標籤/搜索