物件導向的設計原則

2021-09-16 14:22:06 字數 1490 閱讀 3830

1、單一職責原則

單一職責原則的核心思想是要求乙個類只具有一項職責,並且引起這個類發生變化的原因只有乙個。

如果乙個類承擔的責任過多,這些職責之間難免相互關聯,高度耦合,這與物件導向高內聚低耦合的原則是相悖的。當類的職責過多,就應該考慮將類拆分,而拆分的原則就是單一職責原則。

使用單一職責原則可以使類變得簡單,複雜度更低,並且短小的**也更容易維護,可讀性更高,此外當程式發生變更時,可以將變更風險降到最低。

2、黎克特制替換原則

黎克特制替換原則也叫做利斯科夫替換原則,由圖靈獎得主芭芭拉利斯科夫女士提出,其核心思想是父類出現的地方必然能用子類替換,並且替換後程式的行為不會發生變換。

但是要注意的是,黎克特制替換原則反之是不成立的,也就是說,子類出現的地方不一定能用父類替換,因為子類可以新增新的行為,而這些行為是子類特有的,父類中並不具備。

黎克特制替換原則實際上對繼承的方式提出了約束。在遵循黎克特制替換原則的前提下,子類應該盡可能不覆蓋父類中已經實現的方法,因為這可能會破壞繼承體系,使得系統的行為難以控制,但是子類新增的方法不受限制。

3、依賴倒置原則

依賴倒置原則的核心思想是程式應該依賴於抽象的介面,而不應該依賴於具體的類,或者程式設計時應該面向介面程式設計。

在上層呼叫下層的過程中,如果下層是具體的類,那麼類一旦發生變化,上層**很可能也會發生變更。如果下層是抽象的介面,而介面的變化概率很小,即便實現介面的類發生了變化,只要保持介面穩定,上層**就不需要改變。

由於下層模組的修改而迫使上層模組發生變更的設計是荒謬的,因此在設計時應該使用面向介面的方式:下層模組實現抽象的介面,而上層模組只需依賴於這些抽象的介面,而無需依賴於具體的實現。

4、開放封閉原則

開放封閉原則的核心思想是程式應該是可擴充套件的,而不是可修改的,或者說程式對擴充套件開放,對修改關閉。

實現開放閉合原則的關鍵還是要面向介面程式設計,讓類依賴於抽象的介面。由於介面不會發生改變,因此依賴於介面的類也不會發生改變,從而實現對修改封閉,而通過實現介面可以定義新的類,滿足新需求,從而實現對擴充套件開放。通過開放閉合原則設計出來的系統既能保證程式的靈活性,很方便地擴充套件新功能,又能保證程式的穩定性,控制需求變更的風險,降低維護成本。

5、介面隔離原則

介面隔離原則的核心思想是盡量使用多個功能單一的小介面,而不要使用乙個功能複雜的大介面,對乙個龐大介面的依賴很容易造成介面汙染。

如果介面中包含很多方法,實現介面的類必須實現介面中的每乙個方法,不管這個方法對於類是否有實際意義,這顯然不是乙個好的設計,因此需要對這個介面進行拆分,將其拆分為若干個小介面。

在運用介面隔離設計原則設計介面時,需要把握好介面的粒度,過大的介面會造成介面臃腫,過小的介面會造成介面氾濫,遵循的原則是介面只暴露呼叫方所需要的方法即可。

6、最少知道原則

最少知道原則也叫迪公尺特原則,其核心思想是乙個物件對其它物件的了解應該盡可能地少,物件之間通過盡量少的方法聯絡。

最少知道原則的目的是降低類之間的耦合度。由於每個類都減少了對其他類的不必要的依賴,因此類之間的耦合度降低了。但是為了讓非直接類之間進行通訊,必須使用中介類,這無疑增加了程式的複雜度。

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...

物件導向設計原則

物件設計原則 物件導向設計原則 物件導向設計的基石是 開 閉 原則。開一閉 原則講的是 乙個軟體實體應當對擴充套件開放,對修改關閉。這個規則說的是,在設計乙個模組的時候,應當使這個模組可以在不被修改的前提下被擴充套件。從另外乙個角度講,就是所謂的 對可變性封裝原則 對可變性封裝原則 意味著兩點 1 ...

物件導向設計原則

oo原則 封裝變化 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合而努力 類應該對擴充套件開放,對修改關閉 依賴抽象,不要依賴具體類 只和朋友交談 別找我,我會找你 類應該只有乙個改變的理由 從設計原則到設計模式 針對介面程式設計,而不是針對實現程式設計 客戶無需知...