設計模式初理解

2021-08-02 17:53:05 字數 2139 閱讀 5680

設計模式學習完了,當然是要總結一下的。

學習設計模式當然首先要了解什麼是模式啦,模式呢,就是在特定的環境下人們解決某類重複的出現的問題的一套成功或者有效的解決方案。

我們從事軟體設計的人員應該了解到在軟體開發生命週期的每乙個階段都存在一些被認同的模式。

軟體的模式分為四部分:分別是問題描述、前提條件、解決方法和效果。

由模式的定義可以得到,軟體的設計模式可以理解為在特定的條件下為一些重複出現的軟體設計問題提供合理的、有效的解決方案。

使用設計模式的好處有很多:

1、它有助於提高軟體開發和設計的效率。

2、提供一套通用的設計詞彙和一種通用的形式,方便設計人員之間的溝通與交流。

3、很大程度上都兼顧了系統的可重用性和可擴充套件性。

4、有助於初學者更加深入的理解物件導向思維。

5、使**更容易被他人理解並保證**的可靠性。

物件導向設計方法所需要考慮的核心問題就是如何同時提高乙個軟體系統的可維護性和可復用性。物件導向的設計原則就是為支援可維護性復用而誕生。

首先總結一下設計模式的七個原則:

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

概念:乙個類只負責乙個功能領域中的相應職責,或者可以定義為:就乙個類而言,應該只有乙個引起它變化的原因。

為什麼要遵守這個原則呢?因為如果乙個類承擔的職責過多,就等於把這些職責耦合在一起,乙個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。

這是乙個神奇的原則,因為它是最簡單但又最難運用的原則,單一職責原則是實現高內聚、低耦合的指導方針,需要設計人員發現類的不同職責並將其分離,而發現類的多重職責需要設計人員具有較強的分析設計能力和相關實踐經驗。

開閉原則(open-closed principle, ocp):

概念:乙個軟體實體應當對擴充套件開放,對修改關閉。即軟體實體應盡量在不修改原有**的情況下進行擴充套件。

為什麼要遵守這個原則呢?因為開閉原則是物件導向設計的核心所在,多擴充套件、少修改,既可以保持軟體的相對穩定性和可靠性,還可以根據需求的改變不斷的推出新版本。也就是可維護、可擴充套件、可復用、靈活性好。

黎克特制代換原則(liskov substitution principle, lsp):

所有引用基類(父類)的地方必須能透明地使用其子類的物件,也就是子型別能夠替換掉它的父型別,程式的行為沒有變化。

為什麼要遵守這個原則呢?為了提高軟體的可復用性,當子類替換掉父類,軟體單位的功能不受影響時,父類才真正的被復用,而子類也能夠在父類的基礎上增加新的行為。

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

概念:抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對介面程式設計,而不是針對實現程式設計。

為什麼要遵守這個原則呢?依賴倒轉原則可以提高程式的可擴充套件性,也可有效的降低程式耦合;依賴倒轉原則避免了修改負責複雜邏輯的高層模組,大大提高了程式的穩定性。

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

概念;使用多個專門的介面,而不使用單一的總介面,即客戶端不應該依賴那些它不需要的介面,類間的依賴關係應該建立在最小的介面上。

為什麼要遵守這個原則呢?因為對介面進行細化可以提高程式設計靈活性,但是注意要有限度。只有專注地為乙個模組提供定**務,才能建立最小的依賴關係。提高內聚,減少對外互動。使介面用最少的方法去完成最多的事情。

合成復用原則(composite reuse principle, crp):

概念:盡量使用物件組合,而不是繼承來達到復用的目的。簡言之:復用時要盡量使用組合/聚合關係(關聯關係),少用繼承。

為什麼要遵守這個原則呢?組合/聚合可以使系統更加靈活,降低類與類之間的耦合度,乙個類的變化對其他類造成的影響相對較少;而通過繼承來進行復用的主要問題在於繼承復用會破壞系統的封裝性。

迪公尺特法則(law of  demeter, lod):

概念:乙個軟體實體應當盡可能少地與其他實體發生相互作用。

為什麼要遵守這個原則呢?迪公尺特法則可降低系統的耦合度,使類與類之間保持鬆散的耦合關係。迪公尺特法則要求我們在設計系統時,應該儘量減少物件之間的互動,如果兩個物件之間不必彼此直接通訊,那麼這兩個物件就不應當發生任何直接的相互作用,如果其中的乙個物件需要呼叫另乙個物件的某乙個方法的話,可以通過第三者**這個呼叫。簡言之,就是通過引入乙個合理的第三者來降低現有物件之間的耦合度。

《大話設計模式》初讀理解記錄

模版方法模式 既是將相同的部分放在父類,而又將不同的部分使用虛方法,再在子類中實現那些不同的地方。外觀模式 即建立乙個中間類,把需要實現的東西放在中間類中實現,而外部客戶 主程 只要操作中間類的方法即可,修改時也只是修改中間類方法與增加類,可以不用動主程。模式 竟然忘了什麼名字 先建立乙個不能實現任...

設計模式(初)

一 設計模式的分類 1.根據目的分類 1 建立型模式,此類模式主要用於建立物件。工廠模式,建造者模式等等 2 結構型模式,此類模式主要用於處理類或物件的組合 介面卡模式,橋接模式等等 3 行為型模式,此類模式主要用於描述類或物件如何 互動和怎樣分配職責。職責鏈模式,命令模式等等 注 碰到問題首先匹配...

初遇設計模式

今天開始學設計模式了。用的是程杰老師寫的 大話設計模式 在網上搜了一下這位老師的資料,簡單的了解一下這位大牛。那麼什麼是設計模式?design pattern 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易...