00 7物件導向設計原則 合成復用原則

2022-09-10 11:33:15 字數 1237 閱讀 2575

定義:指盡量使用物件組合或物件聚合的方式實現**復用,而不是用繼承關係達到復用**的目的。合成復用原則可以使系統更加靈活,降低類與類之間的耦合度,乙個類的變化對其他類造成的影響相對較小。

繼承,又被稱為白箱復用,相當於把所有實現細節暴露給子類。組合/聚合又被稱為黑箱復用。對類以外的物件是無法獲取到實現細節的。我們要根據具體的業務場景來做**設計。

來我們看乙個案例,還是以資料庫操作為例,首先建立dbconnection類:

package

org.test.design.principle.carp;

public

class

dbconnection

}

建立productdao類:

package

org.test.design.principle.carp;

public

class

productdao

public

void

addproduct()

}

這是一種非常典型的合成復用原則應用場景。但是,對於目前的設計來說,dbconnection還不是一種抽象,不便於系統擴充套件。目前的系統支援mysql資料庫連線,假設業務發生變化,資料庫操作層要支援oracle資料庫。當然,我們可以在dbconnection中增加對oracle資料庫支援的方法,但是這違背了開閉原則。其實,可以不必須修改dao的**,將dbconnection修改為abstract,**如下:

package

org.test.design.principle.carp;

public

abstract

class

dbconnectionv2

然後將mysql的邏輯抽離

package

org.test.design.principle.carp;

public

class mysqlconnection extends

dbconnectionv2

}

再建立oracle支援的邏輯

package

org.test.design.principle.carp;

public

class oracleconnection extends

dbconnectionv2

}

此篇完。

物件導向設計原則 合成復用原則

合成復用原則又稱為組合 聚合復用原則 composition aggregate reuse principle,carp 其定義如下 合成復用原則 composite reuse principle,crp 盡量使用物件組合,而不是繼承來達到復用的目的。合成復用原則就是在乙個新的物件裡通過關聯關係...

物件導向設計原則之合成復用原則

合成復用原則又稱為組合 聚合復用原則 composition aggregate reuse principle,carp 其定義如下 合成復用原則 composite reuse principle,crp 盡量使用物件組合,而不是繼承來達到復用的目的。合成復用原則就是在乙個新的物件裡通過關聯關係...

物件導向設計原則之合成復用原則

合成復用原則又稱為組合 聚合復用原則 composition aggregate reuse principle,carp 其定義如下 合成復用原則 composite reuse principle,crp 盡量使用物件組合,而不是繼承來達到復用的目的。合成復用原則就是在乙個新的物件裡通過關聯關係...