面向?qū)ο笤O(shè)計的六大基本原則

面向?qū)ο笤O(shè)計的六大基本原則:

1)開閉原則

2)里氏代換原則

3)依賴倒轉(zhuǎn)原則

4)接口隔離原則

5)迪米特法則

6)合成/聚合復用原則


依次解釋六大基本原則:

1) 開閉原則:?

?即面向擴展開放,面向修改封閉,也就是說系統(tǒng)支持擴展,但是不支持修改。

?為什么這么做?

在開發(fā)階段,我們都知道,如果對一個功能進行擴展,如果只是一味地對方法進行修改,可能會造成一些問題,諸如 可 能會引入新的bug,或者增加代碼的復雜度,對代碼結(jié)構(gòu)造成破壞、冗余,還需要重新進行全面的測試。那么該怎么解決這些問題?很簡單,這就需要系統(tǒng)能夠支持擴展,只有擴展性良好的系統(tǒng),才能在不進行修改已有實現(xiàn)代碼的基礎(chǔ)上,引進新的功能。


?我們應該怎么做?

要做到開閉原則,就需要多使用抽象類或者接口,將相似的類進行抽象,將公有的功能引入到抽象類中,這樣在進行擴展時,只需要依據(jù)抽象類,生成新的子類即可。


2) 里氏代換原則:

?即任何使用基類的地方,都能夠使用子類替換,而且在替換子類后,系統(tǒng)能夠正常工作。

?為什么這么做?

采用里氏替代原則可以增強程序的健壯性,版本升級的時候可以保持非常好的兼容性,即使增加子類,原有的子類也可以繼續(xù)運行。

?我們應該怎么做?

在引用基類的地方就能引用子類實現(xiàn)



3) 依賴倒轉(zhuǎn)原則:

?即我們的client類要依賴于抽象,而不是依賴于具體,也就是我們經(jīng)常聽到的“要面向接口編程”。

?為什么這么做?

減少類間的耦合性,提高代碼的可讀性和可維護性。

?我們應該怎么做?

a、每個類盡量都有接口和抽象類,或者抽象類和接口都有。

b、變量的表面類型盡量是接口或者是抽象類。

c、任何類都不應該從具體類派生。(但是在做二次開發(fā)的時候,我們無法獲得高層代碼的時候例外),規(guī)則不是絕對的。

d、盡量不要覆寫基類已經(jīng)實現(xiàn)好的方法。


4) 接口隔離原則:

??即應該將接口粒度最小化,將功能劃分到每一個不能再分的子角色,為每一個子角色創(chuàng)建接口,通過這樣,才不會讓接口的實現(xiàn)類實現(xiàn)一些不必要的功能。

?為什么這么做?

避免讓接口的實現(xiàn)類實現(xiàn)一些不必要的功能

?我們應該怎么做?

建立單一的接口,不要建立臃腫的龐大的接口,也就是說接口的方法盡量少。


5) 迪米特法則:

?即盡量減少類之間的依賴關(guān)系.

?為什么這么做?

? ? ? ?降低類之間的耦合。

?我們應該怎么做?

? ? ? ?在應用中最直接的實現(xiàn)就是在兩個類中間建一個中介類。但是這樣可能會造成中介類的澎爆。


6) 合成/聚合復用原則:

?即少用繼承,多用組合。

?為什么這么做?

優(yōu)先使用對象的合成/聚合將有助于你保持每個類被封裝,并被集中在單個任務(wù)上。這樣類和類繼承層次會保持較小規(guī)模,并且不太可能增長為不可控制的龐然大物。

?我們應該怎么做?

使用組合也就是將兩個類之間建立關(guān)聯(lián)關(guān)系,將一個類做為另一個類的屬性。

繼承與組合主要是區(qū)分兩個角色之間是"is a"還是"has a"的關(guān)系,如果是"is a"就需要使用繼承,而如果是"has a"就需要使用組合。

例如筆可以分為鋼筆和油筆,這就是is a的關(guān)系,但是油筆與筆芯就是has a的關(guān)系。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 單一職責原則 (SRP) 全稱 SRP , Single Responsibility Principle 單一職...
    米莉_L閱讀 1,856評論 2 5
  • 前言 關(guān)于設(shè)計模式六大設(shè)計原則的資料網(wǎng)上很多,但感覺很多地方解釋地都太過于籠統(tǒng)化,特此再總結(jié)一波。 優(yōu)化第一步-單...
    ghroost閱讀 1,250評論 0 5
  • 前言 設(shè)計模式六大原則網(wǎng)上資料比較多比較亂,本文將網(wǎng)上的一些好的資料做一下整理,以便隨時翻閱。友情提示,設(shè)計模式雖...
    簡單的土豆閱讀 1,509評論 0 10
  • 設(shè)計模式六大原則 設(shè)計模式六大原則(1):單一職責原則 定義:不要存在多于一個導致類變更的原因。通俗的說,即一個類...
    viva158閱讀 821評論 0 1
  • 2017年國慶假期,湊巧國慶和中秋的雙節(jié),難得有長達8天的假期。早就訂好全家一起出去游玩,地點是三亞。 前三天在家...
    看我的眼睛閱讀 238評論 0 1

友情鏈接更多精彩內(nèi)容