讀《大話設計模式》和《head first 設計模式》心得

碼農的小夢想發表於2013-11-10

1.物件導向的程式設計,並不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的物件的抽象集合才是類。

2.如果你能夠想到多於一個的動機去改變一個類,那麼這個類就具有多於一個的職責。就一個類而言,應該僅有一個引起它變化的原因。

3.開放-封閉原則是物件導向設計的核心所在。遵循這個原則可以帶來物件導向技術所聲稱的巨大好處,也就是可維護、可擴充套件、可複用、靈活性好。開發人員應該僅對程式設計師呈現出頻繁變化的那些部分做出抽象,然而,對於應用程式中每個部分都刻意地進行抽象同樣不是一個好主意。拒絕不成熟的抽象和抽象本身一樣重要。面對需求,對程式的改動是通過增加新程式碼進行的,而不是更改現有的程式碼。

4.里氏代換原則:子型別必須能夠替換掉它們的父型別。只有當子類可以替換掉父類,軟體單位的功能不受到影響時,父類才能真正被複用,而子類也能夠在父類的基礎上增加新的行為。(企鵝不能繼承鳥類!)

5.迪米特法則(最少知識原則):在類的結構設計上,每一個類都應當儘量降低成員的訪問許可權,也就是說,一個類包裝好自己的private狀態,不需要讓別的類知道的欄位或行為不要公開。如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用,可以通過第三方轉發這個呼叫。也就是說,不要對具體的實現程式設計,應該對介面程式設計。

6.合成/聚合利用原則:儘量使用合成/聚合,儘量不要使用類繼承。繼承是一種強耦合,組合是一種弱耦合。

7.每個地方都採用開放-關閉原則,是一種浪費,也沒必要,還會導致程式碼變得複雜且難以理解。我們需要把注意力集中在設計中最有可能改變的地方,然後應用開發-關閉原則。這牽涉到設計OO系統的經驗,和對你工作領域的瞭解。

8.要依賴抽象,不要依賴具體類。下面的指導方針,能幫你避免在OO設計中違反信賴倒置原則:

   1>變數不可以持有具體類的引用;

   2>不要讓類派生自具體類;

   3>不要覆蓋蕨類中已實現的方法。

相關文章