設計模式 設計原則與設計模式

2021-10-01 10:24:38 字數 1545 閱讀 2574

一切設計都為了**的可擴充套件性和可讀性,都為了應對變化!

我們是基於設計原則的思想,來選擇設計模式去實現,**可讀,可擴充套件的目標!

核心設計思想:對擴充套件開放,對修改關閉。

含義:抽象可變功能,可變功能通過子類擴充套件實現,避免對已有抽象實現的修改。

優點:便於擴充套件;

核心設計思想:單個方法或單個類或單個包,應該包含單一的職責

含義:

優點:便於擴充套件;可讀性高

設計思想:高層模組不應該依賴底層模組,應該依賴其抽象。

含義:面向介面程式設計,不要面向實現,比如服務模組**會使用資料模組的功能,那麼服務模組應該內聚的是資料模組的抽象,而不是具體的資料模組實現,這樣可以避免因資料模組實現的變動,而導致服務模組的改變。經典應用:spring的ioc

優點:便於擴充套件;

設計思想:介面設計應該具備單一責任要求,即多個單一責任介面替換多責任介面

含義:子類避免繼承介面後,被迫實現一些自己不需要的功能,哪怕是空實現,也代表介面設計出現責任非單一的問題。應該把介面細化,按功能劃分為多類介面。

優點:便於擴充套件;可讀性高

設計思想:乙個物件應該對其他物件保持最少的了解

含義:

優點:便於擴充套件;可讀性高;

設計思想:所有引用基類的地方必須能替換為它的任意子類物件,且程式執行效果「不變 」

含義:子類不要重寫父類的非抽象方法,父類只實現通用方法即可。盡量保證繼承的有意義,不要亂用繼承,來實現非繼承功能。其實就是少修改,多擴充套件,也是開閉原則的體現。

優點:可擴充套件性;可讀性高;

設計思想:盡量使用物件組合(has-a)/聚合(contanis-a),而不是繼承關係達到功能復用的目的

含義:黎克特制替換是強調合理使用繼承,如果出現繼承無法滿足的時候,採用合成復用的方式,而不要去破壞原本的繼承關係。

優點:可擴充套件性;可讀性高;

總體來說,都是為了可擴充套件性和可讀性,

核心思想:開閉和單一;

實現方式:依賴倒置、介面隔離、最少知道;

關係約定:黎克特制替換、合成復用;

心懷擴充套件,**易讀,原則為本,模式為法。

多讀原始碼!多思考!多動手!gogogo!

愛家人,愛生活,愛設計,愛程式設計,擁抱精彩人生!

設計模式 設計模式原則

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

設計模式 設計原則

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

設計模式 設計原則

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