設計模式系列 物件導向葵花寶典 物件導向技巧

2021-08-11 05:55:23 字數 2435 閱讀 4735

宣告:本系列為物件導向葵花寶典一書學習總結內容,原作者部落格鏈結

8. 設計原則

8.1. 內聚和耦合

內聚

是否專注模組的職責,是內聚性的充要條件

是否與模組處理的內容相關

耦合

耦合(或者稱依賴)是程式模組相互之間的依賴程度

內聚關注模組內部的元素結合程度,耦合關注模組之間的依賴程度

訊息耦合模組間的耦合關係表現在傳送和接收訊息

資料耦合兩個模組間通過引數(簡單型別或者複雜型別)傳遞基本資料,稱為資料耦合。

控制耦合當乙個模組通過某種方式( 傳參)來控制另外乙個模組的行為時,稱為控制耦合

全域性耦合當兩個模組共享相同的全域性資料,稱為全域性耦合

8.2. 類設計原則

srp(single responsibility principle)單一職責原則

用於類的設計

類的職責是站在其它類的角度來定義的

類的職責包含多個相關功能 乙個類有多個方法,這些

方法是相關的

srp不能應用於聚合類(多個職責類的組合)

ocp(open-closed principle)開閉原則

總的指導思想

提供者(生產者)增加新的功能,但使用者(消費者)不需要修改**

例如 a 類呼叫了b類的方法,則 a就是消費者,b就是生產者

所謂的增加新功能,並不是增加乙個全新的功能,而是原有的功能有了替代實現

lsp(liskov substitution principle)黎克特制替換原則

用於指導類繼承的設計

針對父類的單元測試用例,傳入子類是否也能夠測試通過

同乙個方法,子類可以有不同的實現,從而實現多型

isp(inte***ce segregation principle)介面隔離原則

用於指導介面的設計

客戶端不應該被強迫去依賴它們並不需要的介面

建議客戶端不需要知道整個類,只需要知道具有內聚介面的抽象父類即可

實現介面的類,可以替換 方法中的介面引數

dip(dependency inversion principle)依賴倒轉原則

用於指導如何抽象

高層模組不應該直接依賴低層模組,兩者都應該依賴抽象層(穩定的部分)

抽象不能依賴細節(變化的部分),細節必須依賴抽象(穩定的部分)

從不同的範圍角度看,模組的範圍不同 架構層-子系統 子系統-元件

高層模組基於抽象層程式設計 低層模組繼承或者實現抽象層

不要過度設計

9. 設計模式
9.1. 設計模式簡介

模式描述了乙個在我們周圍不斷重**生的問題,以及該問題的解決方案的核心」,即:模式是重**生的問題的解決方案。

9.2. 設計模式只是一把錘子

兩個主要約束

1)設計模式解決的是「可復用」的設計問題;

2)設計模式應用的領域是「物件導向」;

9.3. 設計模式之道

設計模式的「道」就是用來指導我們什麼時候用設計模式,為什麼要用設計模式,

23 個設計模式只是告訴了我們 how,而設計模式之道卻可以告訴我們 why 和 where!

八字精解:找到變化(where),封裝變化(why)

「封裝變化」意味著將變化的影響範圍控制最小,將風險降到最低(不是拒絕變化)

9.4. 原則 vs 模式

設計原則主要用於指導「類的定義」的設計

設計模式主要用於指導「類的行為」的設計

9.5. 模式詳解

學習設計模式

學習設計模式的時候,我們必須深入理解某個設計模式是為了解決什麼變化引起的問題,

然後再看這個設計模式是如何應用「兩個基本點」對應的原則來封裝這個變化的。

應用設計模式

在實際應用的時候,我們不要一開始就想著要把某個模式塞到某個地方,

而是先找到可能變化的地方,再來看具體使用哪個模式可以封裝這種變化。

模式講解-案例

裝飾模式

更多模式請檢視原書講解。

設計模式系列 物件導向葵花寶典 物件導向基礎

宣告 本系列為物件導向葵花寶典一書學習總結內容,原作者部落格鏈結 書籍簡介 文中闡述了作者對物件導向的深入理解,全面闡述了物件導向的理論基礎,以及通過物件導向的實戰指導進行分析,尤為重點讓人容易忽視的需求分析過程,讓程式更具有建造者的設計氣息。最後一部分講解了物件導向的技巧,以及設計模式的內在剖析。...

設計模式系列 物件導向葵花寶典 物件導向實戰

宣告 本系列為物件導向葵花寶典一書學習總結內容,原作者部落格鏈結 3.物件全流程概述物件導向的技術流程可以概括如下 需求模型 通過和客戶溝通,結合行業經驗和知識,明確要求客戶的需求。領域模型 基於需求模型,提煉出領域相關的概念,為後面的物件導向設計打下基礎。領域模型 以領域模型為基礎,綜合物件導向的...

商業模式不是「葵花寶典」

我總覺得,創業者對於商業模式的狂熱追捧越來越走向了乙個誤區。此話怎講?因為模式說到底,實際上是一種複雜商業邏輯的簡化。模式的產業殺傷力越大,自殺的可能性也越大,比如順馳。最近因為新工作的關係,老跟創業 風投的朋友打交道。耳朵裡聽到最多的乙個詞是 商業模式 business model 自從本世紀初....