程式設計原則之組合/聚合複用原則
阿新 • • 發佈:2018-12-10
一、什麼是組合/聚合複用原則
儘量採用組合(contains-a)、聚合(has-a)的方式而不是繼承(is-a)的關係來達到軟體的複用目的
組合/聚合優點:
類之間的耦合比較低,一個類的變化對其他類造成的影響比較少
缺點:
類的數量增多實現起來比較麻煩
繼承的優點:
由於很多方法父類已經實現,子類的實現會相對比較簡單
缺點:
將父類暴露給了子類,一定程度上破壞了封裝性,父類的改變對子類影響比較大。
二、結合實際場景進行分析
模擬一個dao層進行增加產品的功能:
其類圖如下:
這裡ProductDao與DbConnection之間是繼承關係,這裡模擬的是使用MySql資料庫增加產品的功能,假設此時又增加一種資料庫oracle資料的連線,就得修改DbConnection的實現,這違反了開閉原則。我們可以使用擴充套件抽象類的方式進行實現:
此時的類圖:
上面這個既符合開不原則(對擴充套件開放,對修改關閉),不管再增加什麼資料庫連線,只要從DbConnection擴充套件一個類就行。也符合組合/聚合複用原則,ProductDao類與DbConnection類形成了一對一的組合關係。