奈學開發者社群分享:Java - 設計模式的7個設計原則
因為設計模式就是基於這些原則的實現,所以很有必要了解這些原則,下面主要對物件導向程式設計的幾個原則進行簡單介紹。
1、單一職責原則 ( SRP )
英文全稱是Single Responsibility Principle,定義是一個類,應該只有一個引起它變化的原因。類變化的原因就是職責,如果一個類承擔的職責過多,就等於把這些職責耦合在一起了。一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當發生變化時,設計會遭受到意想不到的破壞。而如果想要避免這種現象的發生,就要儘可能的遵守單一職責原則。此原則的核心就是解耦和增強內聚性。
2、開閉原則 ( OCP )
英文全稱是Open Close Principle,定義是軟體實體(包括類、模組
、函式等)應該對於擴充套件時開放的,對於修改是封閉的。開閉原則是是物件導向設計中最重要的原則之一,其它很多的設計原則都是實現開閉原則的一種手段。
3、里氏替換原則 ( LSP )
英文全稱是Liskov Substitution Principle,是物件導向設計的基本原則之一。 定義是任何基類可以出現的地方,子類一定可以出現。LSP 是繼承複用的基石,只有當派生類可以替換掉基類,且軟體單位的功能不受到影響時,基類才能真正被複用,而派生類也能夠在基類的基礎上增加新的行為。里氏替換原則是對開閉原則的補充。實現開閉原則的關鍵步驟就是抽象化,而基類與子類的繼承關係就是抽象化的具體實現,所以里氏替換原則是對實現抽象化的具體步驟的規範。
4、依賴倒置原則 ( DIP )
英文全稱是Dependence Inversion Principle,這個原則是開閉原則的基礎,依賴倒置原則就是要求呼叫者和被呼叫者都依賴抽象,這樣兩者沒有直接的關聯和接觸,在變動的時候,一方的變動不會影響另一方的變動。依賴倒置強調了抽象的重要性,針對介面程式設計,依賴於抽象而不依賴於具體。
5、介面隔離原則 ( ISP )
英文全稱是Interface Segregation Principle,這個原則的意思是使用多個隔離的介面,比使用單個介面要好。目的就是降低類之間的耦合度,便於軟體升級和維護。
6、最少知道原則(迪米特原則)
一個實體應當儘量少地與其他實體之間發生相互作用,使得系統功能模組相對獨立。通俗地說就是不要和陌生人說話,即一個物件應對其他物件有儘可能少的瞭解。迪米特法則的初衷在於降低類之間的耦合。由於每個類儘量減少對其他類的依賴,因此,很容易使得系統的功能模組功能獨立,相互之間不存在(或很少有)依賴關係。
7、合成/聚合複用(CARP)
英文全稱是Composite Reuse Principle,合成/聚合複用原則經常又叫做合成複用原則。合成/聚合複用原則的潛臺詞是:我只是用你的方法,我們不一定是同類。繼承的耦合性更大,比如一個父類後來新增實現一個介面或者去掉一個介面,那子類可能會遭到毀滅性的編譯錯誤,但如果只是組合聚合,只是引用類的方法,就不會有這種巨大的風險,同時也實現了複用。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69976011/viewspace-2724876/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式 #1(7大設計原則)設計模式
- 好程式設計師Java教程分享Java設計模式的6大原則程式設計師Java設計模式
- 設計模式的設計原則設計模式
- Java設計模式(一):設計模式概述、UML圖、設計原則Java設計模式
- 設計原則 設計模式設計模式
- 【設計模式】設計原則設計模式
- 設計模式 - 設計原則設計模式
- Java中的設計模式和原則Java設計模式
- 好程式設計師Java培訓分享Java設計模式的六大原則程式設計師Java設計模式
- 設計模式之7大原則設計模式
- JavaScript設計模式(一)設計原則JavaScript設計模式
- Javascript 設計模式之設計原則JavaScript設計模式
- 設計模式(06)——設計原則(1)設計模式
- 設計模式(07)——設計原則(2)設計模式
- C#設計模式學習筆記:設計原則C#設計模式筆記
- C# 設計模式(0)——設計原則C#設計模式
- 設計模式六大設計原則設計模式
- 設計模式-六大設計原則設計模式
- Java的設計模式和6大原則Java設計模式
- 設計模式 -- 設計模式七大原則設計模式
- C++設計模式的原則C++設計模式
- 設計模式的七大原則(5) --開閉原則設計模式
- Java學設計模式之中介者模式Java設計模式
- 設計模式六大原則(六)----開閉原則設計模式
- 聊聊OOP中的設計原則以及訪問者模式OOP模式
- 前端設計模式(0)物件導向&&設計原則前端設計模式物件
- 物件導向設計原則&設計模式分類物件設計模式
- 《JavaScript設計模式與開發實踐》原則篇(3)—— 開放-封閉原則JavaScript設計模式
- 設計原則:開閉原則(OCP)
- 《JavaScript設計模式與開發實踐》原則篇(2)—— 最少知識原則JavaScript設計模式
- 設計模式:介面隔離原則設計模式
- Kubernetes設計的4個原則
- java 設計模式6原則 介面,抽象類區別Java設計模式抽象
- Java中23種設計模式:六大設計原則的分析與介紹Java設計模式
- java設計模式-建造者模式Java設計模式
- 軟體六大設計原則和設計模式設計模式
- Java設計模式(7)----------橋接模式Java設計模式橋接
- 你知道Python設計模式的原則嗎?Python設計模式