物件導向的幾個原則

2021-08-22 18:29:21 字數 1933 閱讀 5292

開-閉原則 open-closed principle ocp

黎克特制代換原則 liskov substitution principle lsp

依賴倒轉原則 dependency inversion principle dip

介面隔離原則 inte***ce segregation principle isp

組合/聚合復用原則 composition/aggregation principle carp

迪公尺特法則 law of demeter lod

可擴充套件性:ocp, lsp, dip,carp

靈活性:ocp, isp,lod

1.開閉原則 ocp

乙個軟體的實體應當對擴充套件開放,對修改關閉。

software entities should be open for extension,but closed for modification.

對可變性的封裝原則 principle of encapsulation of variation evp

evp實際上是設計模式的主題,換言之,所有的設計模式都是對不同的可變性的封裝,從而使系統在不同的角度上達到ocp要求。

2.黎克特制代換原則 lsp

如果對每乙個型別為t1的物件o1,都有型別為t2的物件o2,使得以t1定義的所有程式p在所有物件o1都代換成o2時,程式p的行為沒有變化,那麼型別t2是t1的子型別。

lsp要求凡是基類使用的地方,子型別一定適用。

lsp是一條非常嚴格的原則,要求基類變為子類的時候,其程式行為不發生改變。在oop時並沒有嚴格按照lsp來做。

3.依賴倒轉原則 dip

表述1:抽象不應當依賴於細節,細節應當依賴於抽象。

abstractions should not depend upon details, details should depend upon abstractions.

表述2:要針對介面程式設計,不要針對實現程式設計。

program to an inte***ce, not an implementation.

4.介面隔離原則 isp

使用多個專門的介面比使用單一的總介面要好。

乙個類對另乙個類的依賴性應當是建立在最小介面上的(lod)。

5.合成/聚合復用原則 carp

= 合成復用原則 composite reuse principle crp

要盡量使用合成/聚合,盡量不要使用繼承。

繼承的優點:①新類易實現. ②易修改或擴充套件

缺點:①繼承復用破環包裝,白箱復用.

②超類發生變化,子類不得不改變.

③繼承的實現是靜態的,不能在執行時改變.

優缺點的②是相互對應的。

6.迪公尺特法則 lod

= 最少知識原則 least konwledge principle

乙個物件應當對其他物件有盡可能少的了解。

表述:①只與你直接的朋友們通訊 only talk to your immediate friends

②不要跟陌生人說話 don's talk to strangers

③每乙個軟體單位對其他的單位都只有最少的知識,而且侷限於那些與本單位密切相關的軟體單位。

lod的實質是控制物件之間的資訊流量,流向及資訊的影響。

①優先考慮將乙個類設定成不變類.

②盡量降低類/成員的訪問許可權.

要想恰到好處地在乙個系統裡面使用設計模式,必須做到以下幾點:

①完全了解面臨的問題,這就是說要完全了解具體情況。如果不完全了解所面臨的難題,怎麼能談得上解決問題呢?

②完全了解模式,這就是說要十分懂得理論。如果不完全懂得所使用的理論,怎麼能夠正確地應用這一理論呢?

③非常了解怎樣使用設計模式解決實際的問題,這就是說要將模式理論與具體系統需求情況相結合。如果設計師不知道乙個設計模式怎樣對系統設計有幫組的話,最好不要使用這個模式。不要只是因為想在簡歷上寫上設計模式方面的經驗就盲目地使用模式。

物件導向程式設計的幾個原則

物件導向程式設計時一般都要注意幾個原則 1 開閉法則 ocp 設計的類要對修改關閉,對擴充套件開放。設計乙個模組的時候盡量做到在這個模組在不被修改的情況下擴充套件其功能,也就是說在不改變源 的情況下,改變這個模組的功能。如何做到開閉法則呢?解決這個問題的關鍵在於抽象化。在物件導向的程式語言如c 可以...

物件導向程式設計的幾個原則

1.開閉原則 the open closed principle ocp 乙個模組在擴充套件性方面應該是開放的而在更改性方面應該是封閉的。因此在進行物件導向設計時要盡量考慮介面封裝機制 抽象機制和多型技術。該原則同樣適合於非物件導向設計的方法,是軟體工程設計方法的重要原則之一。我們以收音機的例子為例...

物件導向的幾個基礎的設計原則

物件導向的設計原則 1 單一原則 每個物件負責各自單獨的職責。既每個類只有乙個職責,對外只提供一種功能,這樣設計可以避免類龐大導致的維護複雜的 問題。2 開閉原則 乙個物件對拓展開放,對修改關閉。對於新的需求是通過拓展原來的 來實現而不是修改原來的 修改原來的 容易產生不可預見的bug。3 依賴注入...