設計模式-面向對象設計原則

面向對象設計原則

QnGkdA.md.png

單一職責原則 :一個類(或者大到模塊,小到方法)承擔的職責越多,它被複用的可能性越小,並且若是一個類承擔的職責過多,就至關於將這些職責耦合在一塊兒,當其中一個職責變化時,可能會影響其餘職責的運做。類的職責主要包括兩個方面:數據職責和行爲職責,數據職責經過其屬性來體現,而行爲職責經過其方法來體現。 單一職責原則是實現高內聚、低耦合的指導方針,在不少代碼重構手法中都能找到它的存在,它是最簡單但又最難運用的原則,須要設計人員發現類的不一樣職責並將其分離,而發現類的多重職責須要設計人員具備較強的分析設計能力和相關重構經驗。編程

Qfx8KS.png

QfxQ8P.md.png

**開閉原則:**抽象化是開閉原則的關鍵。開閉原則還能夠經過一個更加具體的「對可變性封 裝原則」來描述,對可變性封裝原則(Principle of Encapsulation of Variation, EVP)要求找到系統的可變因素並將其封裝起來。優化

QfxVDe.md.png

QfxpNR.md.png

**里氏代換原則: **里氏代換原則能夠通俗表述爲:在軟件中若是可以使用基類對象,那麼必定可以使用其子類對象。把基類都替換成它的子類,程序將不會產生任何錯誤和異常,反過來則不成立,若是一個軟件實體使用的是一個子類的話, 那麼它不必定可以使用基類。 里氏代換原則是實現開閉原則的重要方式之一,因爲使用基類對象的地方均可以使用子類對象,所以在程序中儘可能使用基類類型來對對象進行定義,而在運行時再肯定其子類類型,用子類對象來替換父類對象。設計

Qfv57j.md.png

1576416279276

**依賴倒轉原則:**簡單來講,依賴倒轉原則就是指:代碼要依賴於抽象的類,而不要依賴於具體的類;要針對接口或抽象類編程, 而不是針對具體類編程。 實現開閉原則的關鍵是抽象化,而且從抽象化導出具體化實現,若是說開閉原則是面向對象設計的目標的話, 那麼依賴倒轉原則就是面向對象設計的主要手段。cdn

QfvdXD.md.png

QfvU1K.md.png

**接口隔離原則: **接口隔離原則是指使用多個專門的接口,而不使用單一的總接口。每個接口應該承擔一種相對獨立的角色,很少很多,不幹不應乾的事,該乾的事都要幹。 (1) 一個接口就只表明一個角色,每一個角色都有它特定的一個接口,此時這個原則能夠叫作「角色隔離原則」。 (2) 接口僅僅提供客戶端須要的行爲,即所需的方法,客戶端不須要的行爲則隱藏起來,應當爲客戶端提供儘量小的單獨 的接口,而不要提供大的總接口。對象

Qfvef0.md.png

QfvMXF.md.png

**合成複用原則: **合成複用原則就是指在一個新的對象裏經過關聯關係 (包括組合關係和聚合關係)來使用一些已有的對象, 使之成爲新對象的一部分;新對象經過委派調用已有 對象的方法達到複用其已有功能的目的。簡言之:要儘可能使用組合/聚合關係,少用繼承。blog

QfvFmQ.md.png

QfvATs.md.png

**迪米特法則: **在狹義的迪米特法則中, 若是兩個類之間沒必要彼此直接通訊,那麼這兩個類就不該當發生直接的相互做用,若是其中的一個類須要調用另外一個類的某一個方法的話,能夠經過第三者轉發這個調用。 狹義的迪米特法則能夠下降類之間的耦合,可是會在系統中增長大量的小方法並散落在系統的各個角落,它可使一個系統的局部設計簡化, 由於每個局部都不會和遠距離的對象有直接的關聯,可是也會形成系統的不一樣模塊之間的通訊效率下降,使得系統的不一樣模塊之間不容易協 調。廣義的迪米特法則:指對對象之間的信息流量、流向以及信息的影響的 控制,主要是對信息隱藏的控制。信息的隱藏可使各個子系統之間脫 耦,從而容許它們獨立地被開發、優化、使用和修改,同時能夠促進軟件的複用,因爲每個模塊都不依賴於其餘模塊而存在,所以每個模 塊均可以獨立地在其餘的地方使用。一個系統的規模越大,信息的隱藏就越重要,而信息隱藏的重要性也就越明顯。繼承

QfjXTA.md.png

QfjxYt.md.png

相關文章
相關標籤/搜索