六 :CARP(組合複用原則)

hkmexu發表於2009-03-11

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  從父類繼承來的實現將不能在執行期間進行改變。

 

相關文章