設計模式筆記(一) 設計原則

2021-07-04 13:14:48 字數 1223 閱讀 5081

類/物件之間的關係:

generalization(泛化),dependency(依賴),association(關聯),aggregation(聚合),composition(組合/合成) 泛化

,表示類之間是is-a關係,如類a繼承了b類或實現了b介面,子類會繼承父類的屬性和方法。 依賴

,表示類之間是use-a關係,如該類a的方法中的引數是某個類b,類a和類b就是依賴關係(類b以區域性變數、靜態方法或方法引數的方式出現在類a中)。 關聯

:表示類a知道另乙個類b的屬性和方法的關係。可細分為組合關係和聚合關係。 聚合

:表示類之間has-a關係,如類a的成員變數有類b,但構造器中不用例項化類b。是整體和部分的弱的擁有關係,類b物件可以不在類a物件建立時建立。

組合:表示類之間has-a關係,如類a的成員變數有類b,且構造器中必須例項化類b或持有類b的例項。

是整體和部分的強的擁有關係,類a例項必須負責類b例項的生命週期,類b物件必須在類a物件建立時建立。

(1)針對介面程式設計

針對抽象程式設計,不要針對實現程式設計。

(2)單一職責原則

降低耦合,增強內聚。乙個類最好工作單一,只關心自己範圍內的工作。

(3)開閉原則

對擴充套件開放,對修改關閉。

(4)黎克特制代換原則

所有引用基類的地方必須能透明地使用其子類的物件。若對每乙個t1類的物件o1,都有t2類的物件o2,使得t1定義的程式p在所有物件o1都替換成o2時,程式p的行為沒有變化,那麼t2類就是t1類的子型別。也就是說子類最好是用來擴充套件或實現父類的行為,而不是去改變某些行為。

(5)迪公尺特法則

若兩個類不比彼此通訊,那麼這兩個類就不應該發生直接的相互作用。如果乙個類需要呼叫另乙個類的方法可以通過第三方**這個呼叫。盡量降低類和成員的訪問許可權。只和朋友交流、慎用serializable。

(6)合成/聚合復用原則

盡量使用合成/聚合,盡量不適用繼承。

is-a符合繼承關係,has-a符合聚合關係。

若兩個類是has-a關係,但設計成了繼承,肯定違反黎克特制代換原則。

note:

設計模式(一) 設計原則

此系列只是對 大話設計模式 的鞏固總結。在理解設計模式之前,需要理解幾個 物件導向的設計原則 單一職責 乙個類只專注於做一件事。黎克特制替換 基類存在的地方,子類可以將其替換。依賴倒置 實現盡量依賴抽象,不依賴具體實現。介面隔離 為使用者提供盡可能小的的單獨介面,而不是大而全。迪公尺特法則 乙個實體...

設計模式筆記 設計模式原則總結

設計模式基本原則總結 1.單一職責原則 srp 就乙個類而言,應該僅有乙個引起它變化的原因。2.開放 封閉原則 是說軟體實體 類 模組 函式等等 應該可以擴充套件,但是不可修改。意思是對於擴充套件是開放的 open for extension 對於更改是封閉的 closed for modifica...

設計模式學習筆記 設計原則

設計模式是一套物件導向的 設計經驗總結,是在程式設計領域被反覆使用,被多數人知曉,而且經過分類整理的 設計方法。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。1設計原則 六大設計原則 單一職責原則,黎克特制代換原則,開放 封閉原則,依賴倒轉原則,合成 聚合復用原則,迪公尺特法則 單一...