设计模式之合成/聚合利用原则(CARP)
一、概念
CARP:CompositionAggregation Principle
合成聚合復用原則,盡量使用合成/聚合,盡量不使用類繼承。合成聚合是“has a”的關系,而繼承是“is a”的關系。由于繼承是一中強耦合的結構,父類變,子類必變。所以不是“is a”關系,我們一般不要用繼承。優先使用合成聚合復用原則,有助于保持每個類的封裝,降低繼承的層次。合成/聚合復用原則就是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用已有功能的目的。它的設計原則是;要盡量使用合成/聚合,盡量不要使用繼承。
就是說要少用繼承,多用合成關系來實現。我曾經這樣寫過程序:有幾個類要與數據庫打交道,就寫了一個數據庫操作的類,然后別的跟數據庫打交道的類都繼承這個。結果后來,我修改了數據庫操作類的一個方法,各個類都需要改動。"牽一發而動全身"!面向對象是要把波動限制在盡量小的范圍。
一句話點評:優生優育,不要盲目繁衍。
二、聚合與合成的優缺點:
優點:
1、新對象存取成分對象的唯一方法是通過成分對象的接口。
2、此原則是黑箱復用,因為成分對象的內部細節對新對象而言是看不到的。
3、此原則復用支持包裝。
4、此原則復用所需的依賴較少。
5、每一個新的類可以將焦點集中在一個任務上。
6、此原則復用可以在運行時間內動態進行,新對象可以分理處態的引用與成分對象類型相同的對象。
缺點:
1、系統中會有比較多的對象需要管理
三、繼承的優缺點:
優點:
1、新的實現較為容易,因為超類的大部分功能可以通過繼承的關系自動進入子類。
2、修改和擴展繼承而來的實現較為容易。
缺點:
1、繼承復用破壞包裝,因為繼承將超類的實現細節暴露給子類。由于超類的內部細節常常是對于子類透明的,所以這種復用是透明的復用,又稱“白箱”復用。
2、如果超類發生改變,那么子類的實現也不得不發生改變。
3、從超類繼承而來的實現是靜態的,不可能在運行時間內發生改變,沒有足夠的靈活性。
總結
以上是生活随笔為你收集整理的设计模式之合成/聚合利用原则(CARP)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 六款优秀的Linux引导工具
- 下一篇: 基于335X的UBOOT网口驱动分析