六 :CARP(組合複用原則)
Composite Aggregation Reuse Principle,CARP
***************************************************************
表述:
1. 優先使用物件組合,而不是類繼承。
2. 在一個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過這些向物件的委派達到複用已有功能的目的。
組合 VS. 繼承
組合複用的優點和缺點
n 優點:
F 容器類僅能通過被包含物件的介面來對其進行訪問。
F “黑盒”複用,因為被包含物件的內部細節對外是不可見。
F 封裝性好。
F 通過獲取指向其它的具有相同型別的物件引用,可以在執行期間動態地定義(物件的)組合。
n 缺點:
F 導致系統中的物件過多。
F 為了能將多個不同的物件作為組合塊(composition block)來使用,必須仔細地對介面進行定義。
繼承
(類)繼承是一種通過擴充套件一個已有物件的實現,從而獲得新功能的複用方法。
泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。
特殊類(子類)則通過附加屬性和方法來進行實現的擴充套件。
繼承的優點和缺點
n 優點:
F 容易進行新的實現,因為其大多數可繼承而來。
F 易於修改或擴充套件那些被複用的實現。
n 缺點:
F 破壞了封裝性,因為這會將父類的實現細節暴露給子類。
F “白盒”複用,因為父類的內部細節對於子類而言通常是可見的。
F 當父類的實現更改時,子類也不得不會隨之更改。
F 從父類繼承來的實現將不能在執行期間進行改變。
相關文章
- 軟體設計原則—合成複用原則
- MySQL組合索引和最左匹配原則MySql索引
- 設計模式六大原則(六)----開閉原則設計模式
- MySQL學習筆記:組合索引-最左原則MySql筆記索引
- Vue.js可複用性 & 組合Vue.js
- 六大原則
- 六大設計原則
- 物件導向設計的六大原則(SOLID原則)-——里氏替換原則物件Solid
- 設計模式六大原則(四)----介面隔離原則設計模式
- 六大設計原則(SOLID)Solid
- 軟體開發六大原則(三)-里氏替換原則
- 設計模式六大原則(二)----裡式替換原則設計模式
- 設計模式六大原則(一)----單一職責原則設計模式
- 設計類六大原則
- 六大設計原則詳解
- 設計模式-六大原則設計模式
- 設計模式——六大原則設計模式
- 設計模式六大原則設計模式
- 允許重複的組合
- 物件導向的六大原則物件
- 設計模式之六大原則設計模式
- 設計模式的六大原則設計模式
- 設計模式六大設計原則設計模式
- 設計模式-六大設計原則設計模式
- Python設計模式六大原則!Python設計模式
- 合成複用原則詳解篇(附圖解及原始碼例項)圖解原始碼
- DRY原則與微服務的矛盾:共享複用會導致耦合 - AllenHolub微服務
- 無重複字串的排列組合字串
- 第二階段複習——組合
- 設計模式六大原則(五)----迪米特法則設計模式
- 聯合索引的最左字首匹配原則索引
- 設計模式六大原則詳解設計模式
- 理解面對物件的六大原則物件
- 物件導向之六大設計原則物件
- AD PCB模組複用
- 在設計原則中,為什麼反覆強調組合要優於繼承?繼承
- OA系統設計的六大原則
- 連續架構六大原則 - Murat Erder架構
- OCP原則——開閉原則