面向?qū)ο罅笤瓌t

概覽

系統(tǒng)開發(fā)過程中,最難的不是完成系統(tǒng)的開發(fā)工作,而是在于后續(xù)的升級、維護過程中讓系統(tǒng)能夠擁抱變化。擁抱變化也就意味著在滿足需求且不破壞系統(tǒng)穩(wěn)定性的前提下保持高可擴展性、高內(nèi)聚、低耦合,經(jīng)歷各版本的變更之后依然保持清晰、靈活、穩(wěn)定的系統(tǒng)架構(gòu)。當(dāng)然,這是比較理想的情況,但我們必須朝著這個方向去努力,那么遵循面向?qū)ο罅笤瓌t就是我們走向靈活軟件之路所邁出的第一步。

軟件的可維護性和可復(fù)用性。

好的系統(tǒng)設(shè)計應(yīng)該具備如下三個性質(zhì):

  • 可擴展性(Extensibility)
  • 靈活性(Flexibility)
  • 可插入性(Pluggability)

可維護性較低的系統(tǒng)設(shè)計,通常有如下幾個原因:

  • 復(fù)用率低(Immobility)
  • 黏度過高(Viscosity)
  • 脆弱
  • 僵硬

面向?qū)ο笤O(shè)計原則

常用的面向?qū)ο笤O(shè)計原則并不是孤立存在的,它們相互依賴,相互補充。

  1. 開閉原則
  2. 依賴倒置原則
  3. 里氏替換原則
  4. 單一職責(zé)原則
  5. 接口隔離原則
  6. 迪米特原則

開閉原則(OCP)

Open Close Principle,縮寫OCP。開閉原則由Bertrand Meyer(勃蘭特·梅耶)于1988年出版的《面向?qū)ο筌浖?gòu)造》一書中提出。抽象化是開閉原則的關(guān)鍵。

定義:軟件中的對象(類、模塊、函數(shù)等)應(yīng)該對于擴展是開放的,對于修改是封閉的。

軟件開發(fā)過程中,最不會變化的就是變化本事。

依賴倒置原則(DIP)

Dependence Inversion Principle,縮寫DIP。

定義:依賴倒置原則指代了一種特定的解耦形式,使得高層次的模塊不依賴于低層次模塊的實現(xiàn)細(xì)節(jié)的目的,依賴模塊被顛倒了。

  • 高層模塊不應(yīng)該依賴低層模塊,兩者都應(yīng)該依賴其抽象
  • 抽象不應(yīng)該依賴細(xì)節(jié)
  • 細(xì)節(jié)應(yīng)該依賴抽象

java語言中,抽象就是指接口或抽象類,兩者都不可以直接被實例化;細(xì)節(jié)就是實現(xiàn)類。高層模塊就是調(diào)用端,低層模塊就是具體實現(xiàn)類。

里氏替換原則(LSP)

Liskov Substitution Principle,縮寫LSP。

定義:所有引用基類的地方必須能透明地使用其子類的對象。

單一職責(zé)原則(SRP)

Single Responsibility Principle,縮寫SRP。

定義:就一個類而言,應(yīng)該僅有一個引起它變化的原因。

接口隔離原則(ISP)

InterfaceSegregation Principles,縮寫ISP。

定義:客戶端不應(yīng)該依賴它不需要的接口。

迪米特原則(LOD)

Law of Demeter,縮寫LOD,也稱為最少知識原則。

定義:一個對象應(yīng)該對其他對象有最少的了解。

Only talk to your immedate friends。只與直接的朋友通信。???每個對象都必然會與其他對象有耦合關(guān)系,兩個對象之間的耦合就稱為朋友關(guān)系,如依賴、關(guān)聯(lián)、組合、聚合等。

類應(yīng)該對自己需要耦合或調(diào)用的類知道得最少,類的內(nèi)部如何實現(xiàn)與調(diào)用者或依賴者沒有關(guān)系,調(diào)用者或者依賴者只需要知道它需要的方法即可,其他的可一概不用管。類與類之間關(guān)系越密切,耦合度越大,當(dāng)一個類發(fā)生改變時,對另一個類的影響也越大。軟件總的原則:低耦合、高內(nèi)聚。

最后編輯于
?著作權(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)容

  • 本文出自《Android源碼設(shè)計模式解析與實戰(zhàn)》中的第一章。 1、優(yōu)化代碼的第一步——單一職責(zé)原則 單一職責(zé)原則的...
    MrSimp1e0閱讀 1,918評論 1 13
  • 單一職責(zé)原則 單一職責(zé)原則(Single Responsibility Principle, SRP):一個類只負(fù)...
    小龍蛋閱讀 237評論 0 0
  • 本文原創(chuàng),轉(zhuǎn)載請注明出處。歡迎關(guān)注我的 簡書 ,關(guān)注我的專題 Android Class 我會長期堅持為大家收錄簡...
    MeloDev閱讀 1,296評論 8 33
  • 面向?qū)ο罅笤瓌t: 單一職責(zé)原則 開閉原則 里氏替換原則 依賴倒置原則 接口隔離原則 最少知識原則 單一職責(zé)原則 ...
    Utte閱讀 388評論 0 0
  • 1.單一職責(zé)原則 一個類只做一件事,需要根據(jù)自己的經(jīng)驗判斷到底哪些內(nèi)容算是當(dāng)前一個類的職責(zé)。 定義:不要存在多于一...
    月剪西風(fēng)閱讀 333評論 0 0

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