設計模式原則

2021-10-04 09:09:51 字數 1702 閱讀 8727

從許多優秀的軟體系統中總結出成功的可復用的設計方案

了解反模式

反模式就是從某些軟體系統中總結出來的不好的設計方案,反模式就是告訴你如何採用乙個不好的方案解決乙個問題。這些不好的方案表面上往往有很強的吸引力,人們一眼很難發現它的弊端,因此,發現反模式也是乙個很有意義的事情。對學習設計模式很有幫助。

框架與設計模式

設計模式是為了讓程式具有更好的

抽象類和介面:

介面是一種輻射式設計,介面進行了改變,所有實現這個介面的類都必須進行相應的改動。

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

方法復用最常用的兩種方式:物件組合和類繼承

繼承和復用的比較

高內聚

源於化學中的分子間的作用力,作用力強,則表現為內聚程度高。

系統a、b互動,修改了a,不影響b,那麼認為a有足夠的內聚,a-b有足夠的低耦合。

低耦合

電器與插座之間的關係就是低耦合。

對類來說,乙個類應該只負責一項職責

類中方法少,可以在類中新增其他方法,來實現多功能, 如果通過分解類來實現單一職責,那麼改動會很大,需要靈活使用

乙個類對另乙個類的依賴,應該建立在最小的介面,不需要實現它不需要的介面方法。

依賴抽象,中心思想就是面向介面程式設計,抽象指的是介面或抽象類,使用介面和抽象類的目的是制定好規範。

// email是乙個類,如果入參用類的話,當有其他型別的類需要使用時,需要增加新的方法

class person

}

依賴關係傳遞

inte***ce a 

inte***ce b

class c implements a

}

注意事項及細節

繼承是實現復用的一種方式,但是使用繼承需要注意以下的點,也就是要遵循黎克特制替換原則,其是對繼承的一種約束。通俗的講就是:子類可以擴充套件父類的功能,但不能改變父類原有的功能

繼承的弊端:當父類修改時,要考慮到子類將要引起的變化。

遵循黎克特制替換原則,子類盡量不要重寫父類的方法,如果乙個類重寫了父類的方法過多,可以進一步抽象提取公共部分,通過依賴、組合、聚合的方式降低耦合性。

該原則要求:

a. 子類必須實現父類的抽象方法,但不得重寫父類的非抽象方法

b. 子類可以增加自己特有的方法

c. 當子類覆蓋父類方法時, 方法的前置條件(方法的形參)要比父類的輸入引數更寬鬆(因為寬鬆,所以入參匹配是,仍匹配到的是父類的方法,避免了實現錯亂)

d. 當子類覆蓋父類方法時,方法的後置條件(方法的返回值) 要比父類更嚴格。(因為子類返回值範圍被父類大,會編譯錯誤)

對擴充套件開放,對修改關閉,上面的原則基本都是為了實現這個原則,使用設計模式就是遵循開閉原則。

最少知道原則, 乙個物件應對其他物件保持最少的了解。(只與直接朋友通訊)

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

設計模式 設計模式原則

1 單一職責原則 srp 乙個類應當只有乙個引起其變化的原因。使用單一職責原則的好處有 1 類的複雜性降低 2 可讀性提高 3 可維護性提高 4 變更引起的風險降低 2 黎克特制替換原則 lsp 在使用父類的地方,可以使用其子類替換。黎克特制替換原則的含義 1 子類必須完全實現父類的方法 2 子類可...

設計模式 設計原則

1.單一職責原則 single responsibility principle,簡稱srp 就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受到...

設計模式 設計原則

description 這是本人學習 設計模式之禪 的筆記 設計原則 一 單一職責 應該有且僅有乙個原因讓乙個類發生變更。這個原則目的是要讓介面的職責分明,結構清晰。優點 類的複雜度降低,可讀性提高,變更風險低,可維護性提高。二 黎克特制替換 通俗一點就是父類存在的地方,可以替換為子類,而程式的行為...