深入理解物件導向 六大基本原則

2021-08-09 21:49:01 字數 1470 閱讀 5296

這六大原則任何物件導向的語言都應該遵守的,要想讓你的**易擴充套件高服用就盡量去滿足這六大原則吧,不一定嚴格按照某種設計模式,但是如果你的**符合這六大原則,那麼你的**就是好**了,好的**不一定是嚴格按照設計模式寫的**。

single responsibility principle,單一職責原則。

定義:不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。

優點:

srp其實也蘊含著深沉的人生智慧型——任何事情要想做好就必須要專心致志地做。

liskov substituition principle,黎克特制替換原則。

定義:子類可以擴充套件父類的功能,但不能改變父類原有的功能。

當使用繼承時,遵循黎克特制替換原則。子類繼承父類時,除新增新的方法完成新增功能外,盡量不要重寫父類的方法,也盡量不要過載父類的方法。

dependence inversion principle,依賴倒置原則。

定義:高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。

例如,業務邏輯層相對於資料層是高層模組,因為業務邏輯層需要呼叫資料層去連線資料庫,但是要做到可擴充套件高復用,盡量不要讓業務邏輯層依賴資料層(如資料庫型別mysql,pgsql),可以在資料層抽象出乙個介面(如pdo),讓業務邏輯層依賴於這個抽象介面(統一運算元據庫方法名)。

示例:

inte***ce

dbclass

mysql

implements

dbclass

sqlite

implements

db

open-close principle,開-閉原則。

定義:乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。

場景:在軟體的生命週期內,因為變化、公升級和維護等原因需要對軟體原有**進行修改時,可能會給舊**中引入錯誤,也可能會使我們不得不對整個功能進行重構,並且需要原有**經過重新測試。

建議:當軟體需求變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的**來實現變化。

inte***ce segregation principle,介面隔離原則。

定義:客戶端不應該依賴它不需要的介面;乙個類對另乙個類的依賴應該建立在最小的介面上。

注意:law of demeter or least knowlegde principle(lod or lkp),迪公尺特法則或最少知識原則。這個原則首次在demeter系統中得到正式運用,所以定義為迪公尺特法則。它講的是"乙個物件應當盡可能少的去了解其他物件"。也就是又乙個關於如何松耦合(loosely-coupled)的法則。

定義:乙個物件應該對其他物件保持最少的了解。

場景:類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大。

簡單的理解就是高內聚,乙個類儘量減少對其他物件的依賴,並且這個類的方法和屬效能用私有的就盡量私有化。

注意:

六大基本原則(物件導向)

單一職責原則 每乙個類有自己單獨的職責,每乙個類都單獨開,自己幹自己的事,就像人一樣,眼睛負責視覺,耳朵負責聽覺,鼻子負責嗅覺 方法也是 開放封閉原則 對拓展開放,對修改關閉,也就是說可以通過拓展增加新功能,不要修改原有的 是實現新功能 黎克特制替換原則 子類能夠完成的事情,不要使用父類完成,盡量使...

物件導向程式設計之六大基本原則

單一職責原則 single responsibility principle,srp 乙個類只負責乙個功能領域中的相應職責,或者可以定義為 就乙個類而言,應該只有乙個引起它變化的原因。開閉原則 open closed principle,ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。即軟體實體...

物件導向的五大基本原則深入理解

五大基本原則 黎克特制替換原則 單一職責原則 核心思想為 乙個類,最好只做一件事,只有乙個引起它的變化。例如 將計算器抽象為類,將運算數值和運算方法抽象為狀態和行為 即屬性和方法 public class jisuanqi 加法 public int add int a,int b 減法 publi...