組合的優點和缺點
n 優點:
f 容器類僅能通過被包含物件的介面來對其進行訪問。
f 「黑盒」復用,因為被包含物件的內部細節對外是不可見。
f 對裝性好。
f 實現上的相互依賴性比較小。(譯者注:被包含物件與容器物件之間的依賴關係比較少)
f 每乙個類只專注於一項任務。
f 通過獲取指向其它的具有相同型別的物件引用,可以在執行期間動態地定義(物件的)組合。
n 缺點:
f 從而導致系統中的物件過多。
f 為了能將多個不同的物件作為組合塊(composition block)來使用,必須仔細地對介面進行定義。
繼承 n (類)繼承是一種通過擴充套件乙個已有物件的實現,從而獲得新功能的復用方法。
n 泛化類(超類)可以顯式地捕獲那些公共的屬性和方法。
n 特殊類(子類)則通過附加屬性和方法來進行實現的擴充套件。
繼承的優點和缺點
n 優點:
f 容易進行新的實現,因為其大多數可繼承而來。
f 易於修改或擴充套件那些被復用的實現。
n 缺點:
f 破壞了封裝性,因為這會將父類的實現細節暴露給子類。
f 「白盒」復用,因為父類的內部細節對於子類而言通常是可見的。
f 當父類的實現更改時,子類也不得不會隨之更改。
f 從父類繼承來的實現將不能在執行期間進行改變。
繼承/組合總結
n 組合與繼承都是重要的重用方法
n 在oo開發的早期,繼承被過度地使用
n 隨著時間的發展,我們發現優先使用組合可以獲得重用性與簡單性更佳的設計
n 當然可以通過繼承,以擴充(enlarge)可用的組合類集(the set of composable classes)。
n 因此組合與繼承可以一起工作
n 但是我們的基本法則是:
優先使用物件組合,而非(類)繼承
繼承與組合的優缺點
類繼承和物件組合是復用的兩種最常用的技術。一 繼承 繼承是is a 的關係,比如說student繼承person,則說明student is a person。繼承的優點是子類可以重寫父類的方法來方便地實現對父類的擴充套件。繼承的缺點有以下幾點 父類的內部細節對子類是可見的。子類從父類繼承的方法在編...
繼承與組合的優缺點
原文 殘劍 類繼承和物件組合是復用的兩種最常用的技術。一 繼承 繼承是is a 的關係,比如說student繼承person,則說明student is a person。繼承的優點是子類可以重寫父類的方法來方便地實現對父類的擴充套件。繼承的缺點有以下幾點 父類的內部細節對子類是可見的。子類從父類繼...
繼承與組合的優缺點
類繼承和物件組合是復用的兩種最常用的技術。一 繼承 繼承是is a 的關係,比如說student繼承person,則說明student is a person。繼承的優點是子類可以重寫父類的方法來方便地實現對父類的擴充套件。繼承的缺點有以下幾點 父類的內部細節對子類是可見的。子類從父類繼承的方法在編...