天天看點

Java面向對象設計原則7——合成複用原則合成複用原則:

在我們學習面向對象程式設計的時候,總會出現一些問題,好比以前剛剛寫好的代碼,上線測試可以、正常運作,突然有一天說要加一個功能,改完之後,發現以前正常運作的功能不能用了,類似這樣的問題有好多好多,為了避免類似的事件發生,程式員一定要根據這些原則去開發程式。

我們一個一個來學習,今天來學習7大面向對象設計原則之一,合成複用原則。

合成複用原則:

合成複用原則(Composite Reuse Principle,CRP)又叫組合/聚合複用原則(Composition/Aggregate Reuse Principle,CARP)。它要求在軟體複用時,要盡量先使用組合或者聚合等關聯關系來實作,其次才考慮使用繼承關系來實作。

如果要使用繼承關系,則必須嚴格遵循裡氏替換原則。合成複用原則同裡氏替換原則相輔相成的,兩者都是開閉原則的具體實作規範。

我們來了解一下這段話,首先,我們得知道裡式替換原則,然後我們來看這個定義。

它這個原則是要我們先使用組合或者聚合實作,然後再使用繼承。我這裡舉例說明

我們就用汽車這個來說啊,我們現在汽車有很多種,電動汽車,汽油汽車,還有柴油車(路上跑的那種拉貨的好像就是柴油車)

車呢還有顔色區分,黃的白的綠的黑的。然後我們如果直接繼承的話就變成這樣了

Java面向對象設計原則7——合成複用原則合成複用原則:

從上圖可以看出用繼承關系實作會産生很多子類,而且如果我們再多一種新能源汽車,或者多上幾個顔色,我們還得去修改代碼,這樣做的話,就違背了開閉原則,這顯然不可取。我們如果把顔色當做一個屬性放入到汽車這個父類中,讓其他能源的汽車繼承的時候,自己去定義,這樣就好多了

合成複用原則的實作:

我其實上面在介紹的時候已經說了實作了。。

我這裡畫個圖,來配合我上面說的

Java面向對象設計原則7——合成複用原則合成複用原則:

這樣的話,如果多了一種黃色的汽油汽車,我們隻需要直接繼承汽油汽車,然後修改顔色就行。

我們不需要多弄一個黃色汽油汽車去繼承汽車了。

這裡要好好了解,千萬别弄懵了。

講述到這裡,我們的設計原則就講述完了,雖然就七個原則,但是能真正的做到,或者說真正的按照這些去寫代碼的人啊,所謂是少的可憐,但是,少歸少,我們一定要知道,盡量能保持這樣去做,如果有一天你的上司看不懂你代碼為啥這麼去弄,你就可以給他上一課!

在設計原則這門課程結束的時候,我打個廣告,我個人QQ,2100363119  别加錯了

Java面向對象設計原則7——合成複用原則合成複用原則:

大家可以加一下我的QQ,如果需要微信号的話,大家可以加我QQ之後,我私聊給你我的微信(為了防止有人惡意給我打騷擾電話),到時候我再建立一個群,大家可以再裡面探讨技術,問一些問題,閑聊啊。我以後也會給大家多更新一些資源,供大家學習,我們不為了技術而去學技術,隻為了能實作需求。