前言
物件導向設計模式是」好的物件導向設計「,就是可以指那些可以滿足」應對變化提高復用「的設計;設計模式就是在需求的頻繁變化中尋找變化點,在變化點處應用設計模式,從而可以更好地應對需求變化,我們要知道在什麼時候以及什麼地點使用設計模式。
設計模式不宜先入為主,就是說不能一上來就應用設計模式,我們需要先掌握
」refactoring to patterns「,就是重構獲得模式。
重構的關鍵技法:
靜態 ----------> 動態
早繫結 ----------> 晚繫結
編譯時依賴 ----------> 執行時依賴
繼承 ----------> 組合
緊耦合 ----------> 松耦合
我們在學習c++這裡面23種設計模式時需要始終圍繞以下八種物件導向設計原則進行判斷原本設計為什麼不合理,所以要使用設計模式來時**更具張力。
依賴倒置原則(dip)
• 高層模組(穩定)不應該依賴於低層模組(變化),二者都應該依賴於抽象(穩定)。
• 抽象(穩定)不應該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定)。
開放封閉原則(ocp)
• 對擴充套件開放,對更改封閉。
• 類模組應該是可擴充套件的,但是不可修改。
單一職責原則(srp)
• 乙個類應該僅有乙個引起它變化的原因。
• 變化的方向隱含著類的責任。
liskov 替換原則(lsp)
• 子類必須能夠替換它們的基類(is-a)。
• 繼承表達型別抽象。
介面隔離原則(isp)
• 不應該強迫客戶程式依賴它們不用的方法。
• 介面應該小而完備。
優先使用物件組合,而不是類繼承
• 類繼承通常為「白箱復用」,物件組合通常為「黑箱復用」。
• 繼承在某種程度上破壞了封裝性,子類父類耦合度高。
• 而物件組合則只要求被組合的物件具有良好定義的介面,耦合
度低。封裝變化點
• 使用封裝來建立物件之間的分界層,讓設計者可以在分界層的
一側進行修改,而不會對另一側產生不良的影響,從而實現層
次間的松耦合。
針對介面程式設計,而不是針對實現程式設計
• 不將變數型別宣告為某個特定的具體類,而是宣告為某個介面。
• 客戶程式無需獲知物件的具體型別,只需要知道物件所具有的
介面。• 減少系統中各部分的依賴關係,從而實現「高內聚、松耦合」
的型別設計方案。
下面我們將開始學習這23個設計模式。
C設計模式,C 設計模式解說文件
個人引用了知乎上面一位的回答 遂感覺暫時沒有接觸設計模式的必要,於是將手頭上的資源寫成部落格權當收藏 學習設計模式的乙個弊端是 我們學習的時候看到的只是結果,並不了解過程和動機,也就是其他人在什麼樣的情況下做出這樣的設計,而這個恰恰是各種教程 資料上學習不到的。我自己在經歷了2年的應用設計模式的摸索...
C 設計模式
c 設計模式大體上講分為三類,即 建立模式,結構模式和行為模式 建立模式 單例模式 工廠模式 抽象工廠模式 生成器模式 原型模式。結構模式 介面卡模式 橋接模式 組成模式 裝飾模式 外觀模式 享元模式 模式。行為模式 中介者模式 命令模式 備忘錄模式 狀態模式 策略模式 直譯器模式 迭代器模式 觀察...
C 設計模式
c 設計模式 課程目標 理解松耦合設計思想 掌握物件導向設計原則 掌握重構技法改善設計 掌握gof 核心設計模式 什麼事設計模式 每乙個模式描述了乙個在我們周圍不斷重 生的問題以及該問題的解決方案的核心。這樣,你就能一次又一次的 使用該方案而不必做重複勞動 gof設計模式 歷史性著作 設計模式 可復...