物件導向設計模式原則

2021-06-01 20:45:40 字數 1397 閱讀 8382

一、單一職責原則srp(single responsibility principle):

單一職責原則,指的是乙個類應該僅有乙個引起它變化的原因。

變化的原因,即所謂的「職責」,如果乙個類有多個引起變化的原因,就意味著這個類有多個職責,也就是說多個職責耦合在了一起。這會造成相互影響,可能乙個職責變化影響到其他職責的實現,這種設計是脆弱的。

這個原則看起來簡單,但實際是最難實現的,難點在於難以區分職責,沒有標準化的東西,所以實際開發中,這個原則最容易違反。

二、開放-關閉原則ocp(open-closed principle)

開放-關閉原則,指的是乙個類應該對擴充套件開放,對修改關閉。

要求是類的行為是可擴充套件的,而且是在不修改已有**的情況下。實現的關鍵在於合理的抽象、分離出變化與不變化的部分,為變化部分留下可擴充套件的方式。

適度的抽象可以提高系統的靈活性,使其可擴充套件、可維護;但過度的抽象會大大增加系統的複雜程度。

三、黎克特制替換原則lsp(liskkov substtution principle)

黎克特制替換原則,指的是子型別必須能夠替換掉它們的夫型別。

事實上,當乙個類繼承另一類,那麼子類就擁有所有父類的屬性和行為,理論上用子類代替父類不會引起原來父類程式的錯誤。但是,在某些情況下,例如子類覆蓋了父類的方法,或修改了父類的屬性,那麼就可能出錯。

黎克特制替換原則是實現開閉的主要原則,開閉原則要求對可擴充套件開放,擴充套件的乙個手段就是繼承,而黎克特制原則要保證子類能夠替換父類,只有能爭取替換,才可以實現擴充套件。

四、依賴倒置原則dip(dependence inversion principle)

依賴倒置原則,指的是依賴於抽象,不要依賴於具體類。

要做到依賴倒置,應該做到:

(1)高層模組不應該依賴底層模組,二者都應該依賴抽象。

(2)抽象不應該依賴具體類,抽象應該依賴抽象。

層次化呼叫中,不應該高層呼叫「底層所有介面」,應該是高層模組去影響底層的具體實現。

因此,底層介面應該有高層提出,然後由底層實現。

五、介面隔離原則isp(inte***ce segregation principle)

介面隔離原則,指的是不應該強迫客戶依賴他們不用的方法。

用來處理比較大地介面,這些介面會實現較多的操作宣告,涉及很多職責,客戶在使用這樣的介面會使用很多不需要的方法,這樣的介面應該被分離,按不同客戶分離成為針對不同客戶介面。

分離方法除了,**分離外,還可以使用委託來分離介面,在支援多重繼承語言中,使用多重繼承方式進行分離。

六、最少知識原則lkp(least knowledge principle)

最少知識原則,指的是只和你的朋友談話。

我們在設計時,儘量減少物件之間的互動,物件之和自己的朋友互動,從而鬆散類的耦合,通過鬆散類的耦合降低類之間的依賴。該原則要求方法呼叫必須在一定界限範圍,儘量減少物件的依賴關係。

物件導向設計模式原則

物件導向設計模式原則 網路 1.單一職責原則 srp 單一職責原則 srp 就乙個類而言,應該僅有乙個引起它變化的原因。也就是說,不要把變化原因各不相同的職責放在一起,因為不同的變化會影響到不相干的職責。再通俗一點地說就是,不該你管的事情你不要管,管好自己的事情就可以了,多管閒事害了自己也害了別人。...

物件導向設計模式原則

本文為 設計模式之禪 第二章的讀書筆記 定義 應該有且僅有乙個原因引起類的變化 難點 如何劃分職責 實踐 一般專案類很多時候沒法滿足 單一職責原則,但是介面一定要滿足單一職責原則 定義 凡是父類能出現的地方,子類都能夠出現 具體分為三個層面 注 此時是通過過載而不是重寫父類的方法,實現子類的功能 定...

設計模式 物件導向設計原則

軟體的可維護性和可複製性是兩個非常重要的軟體質量屬性 物件導向物件設計原則是設計模式學習的基礎。每乙個設計模式都符合乙個或者多個物件導向設計原則 單一職責原則是最簡單的物件導向設計原則,它用於控制類的粒度大小 單一設計原則 乙個物件應該只包含單一的職責,並且該職責被完整的封裝在乙個類裡 這也意味著 ...