六 :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
- 六大原則
- 【設計模式——六原則】設計模式
- [原創]OllyDbg實用技巧六則 (3千字)
- 六大設計原則
- 設計模式六大原則(6):開閉原則設計模式
- 用OC程式碼認識六大設計原則C程式
- 需求分析六大原則
- 設計模式六大原則(四)----介面隔離原則設計模式
- 設計模式六大原則(2):里氏替換原則設計模式
- 設計模式六大原則(4):介面隔離原則設計模式
- 設計模式六大原則(3):依賴倒置原則設計模式
- 物件導向設計的六大原則(SOLID原則)-——里氏替換原則物件Solid
- ACCESS:新興移動社交應用走紅的六原則
- JavaScript 設計模式 :用組合模式寫出複雜元件JavaScript設計模式元件
- 設計模式六大原則(二)----裡式替換原則設計模式
- 設計模式六大原則(一)----單一職責原則設計模式
- 設計模式六大原則(1):單一職責原則設計模式
- 軟體開發六大原則(三)-里氏替換原則
- 六大設計原則詳解
- 設計類六大原則
- 設計模式-六大原則設計模式
- 工作的六大原則(收藏)
- 六大設計原則(SOLID)Solid
- 設計模式六大原則設計模式
- 設計模式——六大原則設計模式
- 無重複字串的排列組合字串
- 【設計原則】物件導向程式設計的六大原則物件程式設計
- 設計模式六大設計原則設計模式
- 物件導向的六大原則物件
- 設計模式之六大原則設計模式