c++設計模式:設計原則
阿新 • • 發佈:2021-11-24
c++設計八大原則(降低改變帶來的程式碼修改)
一.依賴倒置原則(DIP)
1.高層模組(穩定)不應該依賴於低層模組(變化),二者應該依賴於抽象(更穩定)
<高層模組 包括 低層模組所依賴的抽象,而不是低層模組的本身,而其本身也依賴於自身抽象模組>
2.抽象(穩定)不應該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定)
<抽象本身不應該依賴於低層的細節變化,否則會消除抽象的穩定性 (抽象類不應該呼叫子類函式),應該將低層變化的細節依賴於抽象的穩定中去>
二.開放封閉原則(OCP)
1.對擴充套件開放,對更改封閉
2.類模組應該是可擴充套件的,但不可修改
<類模組可以進行拓展,但不要進行修改(新增遠遠好於在原來基礎上修改>
三.單一職責原則(SRP)
1.一個類應該僅有一個引起它變化的原因
2.變化的方向隱含著類的責任
<一個類責任要單一,不應該擁有過多的責任,使類本身被四處拉扯>
四.Liskov替換原則(LSP)
1.子類必須能夠替換它們的基類(IS-A)
2.繼承表達型別抽象
<考慮一個類繼承於某個父類的時候,一定要滿足IS-A的關係,不可隨意繼承>
五.介面隔離原則(ISP)
1.不應該強迫客戶程式依賴它們不用的方法
2.介面應該小而完備
<對介面應該嚴格管理對外的許可權,做到小而完備>
六.優先使用物件組合,而不是類繼承
1.類繼承通常為“白箱複用”,物件組合通常為“黑箱複用”
2.繼承在某種程度上破壞了封裝性。子類父類耦合度高
3.而物件組合則只要求被組合的物件具有良好定義的介面,耦合度低
<不要過度依賴於繼承,有時候物件組合也許才是更好的選擇>
七.封裝變化點
1.使用封裝來建立物件之間的分界層,讓設計者可以在分界層的一側進行修改,而不會對另外一側產生不良的影響,從而實現分界層次間的鬆耦合
<理解變化點和分界層,進一步鬆耦合>
八.針對介面程式設計,而不是針對實現程式設計
1.不將變數型別宣告為某個特定的具體類,而是宣告為某個介面。·客戶程式無需獲知物件的具體型別,只需要知道物件所具有的介面
2.減少系統中各部分的依賴關係,從而實現“高內聚、鬆耦合”的型別設計方案。
<介面標準化!多用介面不直接使用內部資料>