設計模式介紹

2021-09-09 05:56:41 字數 1371 閱讀 5737

「每乙個模式描述了乙個在我們周圍不斷重**生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重複勞動」。——christopher alexander

人們面對複雜性有乙個常見的做法:即分而治之,將大問題分解為多個小問題,將複雜問題分解為多個簡單問題。

分解抽象

更高層次來講,人們處理複雜性有乙個通用的技術,即抽象。由於不能掌握全部的複雜物件,我們選擇忽視它的非本質細節,而去處理泛化和理想化了的物件模型。 

1. 依賴倒置原則(dip)

高層模組(穩定)不應該依賴於低層模組(變化),二者都應該依賴於抽象(穩定) 。 抽象(穩定)不應該依賴於實現細節(變化) ,實現細節應該依賴於抽象(穩定)。  

2. 開放封閉原則(ocp)

對擴充套件開放,對更改封閉。類模組應該是可擴充套件的,但是不可修改。  

3. 單一職責原則(srp)

乙個類應該僅有乙個引起它變化的原因。變化的方向隱含著類的責任。  

4. liskov 替換原則(lsp)

子類必須能夠替換它們的基類(is-a)。繼承表達型別抽象。  

5. 介面隔離原則(isp)

不應該強迫客戶程式依賴它們不用的方法。介面應該小而完備。  

6. 優先使用物件組合,而不是類繼承

類繼承通常為「白箱復用」,物件組合通常為「黑箱復用」。繼承在某種程度上破壞了封裝性,子類父類耦合度高。而物件組合則只要求被組合的物件具有良好定義的介面,耦合度低。  

7. 封裝變化點

使用封裝來建立物件之間的分界層,讓設計者可以在分界層的一側進行修改,而不會對另一側產生不良的影響,從而實現層次間的松耦合。  

8. 針對介面程式設計,而不是針對實現程式設計

不將變數型別宣告為某個特定的具體類,而是宣告為某個介面。客戶程式無需獲知物件的具體型別,只需要知道物件所具有的介面。減少系統中各部分的依賴關係,從而實現「高內聚、松耦合」的型別設計方案。  

1. 設計習語design idioms 

design idioms 描述與特定程式語言相關的低層模式,技巧,慣用法。 

2. 設計模式design patterns 

design patterns主要描述的是「類與相互通訊的物件之間的組織關係,包括它們的角色、職責、協作方式等方面。 

3. 架構模式architectural patterns 

architectural patterns描述系統中與基本結構組織關係密切的高層模式,包括子系統劃分,職責,以及如何組織它們之間關係的規則。 

設計模式介紹

我的設計模式入門是head first pattern,可以說是比較好的入門書籍,教程上講解了常用的設計模式,並不全面。作為入門足夠,通俗易懂。設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類的 設計經驗的總結。使用設計模式的目的 為了 可重用性 讓 更容易被他人理解...

設計模式介紹

1 簡介 設計模式是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。毫無疑問設計模式於己於他人於系統都是多贏的 設計模式使 編制真正工程化 2 分類 1 建立型模式 通常和物件的建立有關,涉及到物件例項化的方式。共5種模式 ...

設計模式 常用的設計模式介紹

簡單點說,就是乙個應用程式中,某個類的例項物件只有乙個,你沒有辦法去new,因為構造器是被private修飾的,一般通過getinstance 的方法來獲取它們的例項。getinstance 的返回值是乙個物件的引用,並不是乙個新的例項 懶漢式 執行緒不安全 public class singlet...