設計模式
- 設計模式是指在軟體開發中,經過驗證的,?于解決在特定環境下,重復出現的,特定問題的解決?案;
記憶體模型
-
繼承Base,和成員變數為Base型別的記憶體模型
-
成員變數為Base指標的記憶體模型-》實際開發常用這種
-
由于該形式以Base指標的形式存盤,展現一種多型的思想
-
而上一種中Base型別和Subject呈現一種強依賴的關系
-
-
父類存在虛函式,子類繼承重寫虛函式
- 擴展:c語?當中的多型-》通過函式指標
- redis
- nginx
- 擴展:c語?當中的多型-》通過函式指標
模式設計原則
-
掌握設計原則,而不是設計模式-》設計模式的使用條件有些時候太苛刻
-
八個原則
-
原則1:依賴倒置原則 -》變化點必須依賴穩定點
-
?層模塊不應該依賴低層模塊,?者都應該依賴抽象;
-
抽象不應該依賴具體實作,具體實作應該依賴于抽象;
-
?動駕駛系統公司是?層,汽??產?商為低層,它們不應該互相依賴,??變動另??也會跟著變動;?應該抽象?個?動駕駛?業標準,?層和低層都依賴它;這樣以來就解耦了兩?的變動;?動駕駛系統、汽??產?商都是具體實作,它們應該都依賴?動駕駛?業標準(抽
象);
-
-
原則2:開放封閉原則
- ?個類應該對擴展開放,對修改關閉;
- 擴展:繼承-》virtual多型、組合(成員變數指標)-》組合抽象基類;
- ?個類應該對擴展開放,對修改關閉;
-
原則3:?向接?編程
- 不將變數型別宣告為某個特定的具體類,?是宣告為某個接?,
- 客戶程式?需獲知物件的具體型別,只需要知道物件所具有的接?,
- 減少系統中各部分的依賴關系,從?實作“?內聚、松耦合”的型別設計?案,
-
原則4:封裝變化點 -》關鍵
- 將穩定點和變化點分離,擴展修改變化點;讓穩定點與變化點的實作層次分離;
-
原則5:單?職責原則
- ?個類應該僅有?個引起它變化的原因 -》只有一個功能;
-
原則6:??替換原則
- ?型別必須能夠替換掉它的?型別;主要出現在?類覆寫?類實作,原來使??型別的程式可能出現錯誤;覆寫了?類?法卻沒實作?類?法的職責 -》繼承時沒有實作某些方法;
-
原則7:接?隔離原則
- 不應該強迫客戶依賴于他們不?的?法;
- ?般?于處理?個類擁有?較多的接?,?這些接?涉及到很多職責;
-
原則8:物件組合優于類繼承
- 繼承耦合度****?,組合耦合度**低;
-
什么情況下使?設計模式?
- 系統的關鍵依賴點;
- 能明確找到變化點;
- 能明確找到復??向;
- 對需求變化?向熟悉;
如何找到設計模式?
- 從重構中獲得;
- 重構
- 靜態轉變為動態;
- 早系結轉變為晚系結;
- 繼承轉變為組合;
- 編譯時加載轉變為運?時加載;
- 緊耦合轉變為松耦合;
為什么要學習設計模式?
- 從已有的且證明有效的設計模式中獲取靈感,少?彎路;
- 通?語?,知道在已有的設計模式擴展代碼;
- 體會模式設計,設計??的?之有效的設計模式;
學習設計模式的步驟
- 深刻體會上?的原則;
- 理解設計模式,能知道設計模式的變化點和穩定點
- 能在已使?的設計模式中,知道如何寫擴展
- 能在復雜需求中,抽象出已有設計模式;
- 能在重構中,開發??的設計模式;
擴展
- 多個子類中重復的流程合并到父類中,變化的流程暴露出去,子類的處理變為單一
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/547553.html
標籤:設計模式
上一篇:TCP和UDP協議的區別