設計模式六大原則——合成/聚合複用原則(CARP)
1、定義
簡而言之,對於合成/聚合複用原則的定義就是:要盡量使用合成和聚合,盡量不要使用繼承。
2、釋義
為什麼“要盡量使用合成和聚合,盡量不要使用繼承”呢?
這是因為:
第一,繼承複用破壞包裝,它把父類的實現細節直接暴露給了子類,這違背了信息隱藏的原則;
第二:如果父類發生了改變,那麼子類也要發生相應的改變,這就直接導致了類與類之間的高耦合,不利於類的擴展、複用、維護等,也帶來了係統僵硬和脆弱的設計。而用合成和聚合的時候新對象和已有對象的交互往往是通過接口或者抽象類進行的,就可以很好的避免上麵的不足,而且這也可以讓每一個新的類專注於實現自己的任務,符合單一職責原則。
3、何時使用合成/聚合、繼承
兩種判斷方法:
1)、使用“Has-A”和“Is-A”來判斷
“Is-A”代表一個類是另外一個類的一種,可以使用繼承關係,如下圖
而“Has-A”代表一個類是另外一個類的一個角色,而不是另外一個類的特殊種類。如下圖
2)、使用裏氏代換原則來判斷
裏氏代換原則是繼承複用的基礎。
具體介紹:設計模式六大原則——裏氏代換原則
最後更新:2017-04-03 08:26:19