合成復用原則是指盡量使用物件組合/聚合而不是繼承關係達到軟體復用的目的,可以是系統更加靈活,降低類與類之間的耦合度,乙個類的變化對其他類造成的影響相對較小。
繼承叫做白箱復用,相當與把所有的實現細節暴露給子類,物件組合/聚合稱為黑箱復用,我們是無法獲取到類以外的物件的實現細節,雖然我們要根據業務場景來寫**,但也要遵循oop模型。下面我們已運算元據庫為例。
public class dbconnection
}public class productdao
public void addproduct()
}
這就是一種非常典型的合成復用原則的應用場景,但是就目前的設計來說,dbconnection還不是一種抽象,不便與系統擴充套件,目前的場景支援mysql資料庫連線,要是業務發生變化,我們現在要用oracle資料庫連線,當然我們可以直接在dbconnection內直接修改,但是這樣的話,就會違背開閉原則,其實我們也可以不修改而是將dbconnection修改為abstract,下面我們來看**:
public abstract class dbconnection
public class mysqlconnection extends dbconnection
}public class oracleconnection extends dbconnection
}
合成復用原則
合成復用原則 composite reuse principle,crp 又叫組合 聚合復用原則 composition aggregate reuse principle,carp 它要求在軟體復用時,要盡量先使用組合或者聚合等關聯關係來實現,其次才考慮使用繼承關係來實現。抽象汽車類 class ...
合成復用原則
合成復用原則的定義 合成復用原則 composite aggregate reuse principle,carp 指盡量使用物件組合 has a 或物件聚合 contanis a 的方式實現 復用,而不是用繼承關係達到 復用的目的。合成復用原則可以使系統更加靈活,降低類與類之間的耦合度,乙個類的變...
合成復用原則
合成復用原則是指 盡量先使用組合或者聚合等關聯關係來實現,其次才考慮使用繼承關係來實現。通常類的復用分為繼承復用和合成復用兩種。繼承復用雖然有簡單和易實現的優點,但它也存在以下缺點 a 繼承復用破壞了類的封裝性。因為繼承會將父類的實現細節暴露給子類,父類對子類是透明的,所以這種復用又稱為 白箱 復用...