1. 程式人生 > >面向物件程式設計的六個基本原則

面向物件程式設計的六個基本原則

運用面向物件的思想進行軟體設計時要遵循的6個基本原則:

(1)       單一職責原則:一個類只負責一項職責。降低程式碼複雜度,增加可讀性可維護性,只有在邏輯足夠簡單、類中的方法足夠少時才可以在程式碼級別上違反單一職責原則。職責被分解為很多細粒度的職責,程式已經寫好的情況下,分解類開銷大(分解意味著零散,載入變的複雜,閱讀也變得複雜),修改類雖然違反單一職責原則,但是是個不錯的選擇。

(2)       里氏替換原則:子類可以擴充套件父類的功能,但不能改變父類原有的功能。這項原則並不是要避免多型,而是要求子類在繼承父類的時候,不能與父類已經定好的契約衝突,也就是不要重寫父類已經實現的方法。

LSP原則是:只要父類能出現的地方子類就可以出現,而且替換為子類還不產生任何錯誤或異常。怎麼做到:

                      子類過載父類方法,方法的前置條件要比父類更寬鬆

                      子類實現父類的抽象方法時,方法的後置條件要比父類更嚴格。

(3)  依賴倒置原則:高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。它的核心是面向介面程式設計。

老師和家長給孩子講故事,只要給老師和家長一個可讀的東西,他們就可以給孩子講故事了。(Readable、Speaker)。Test-Driven Development開發模式就是依賴倒置原則最成功的應用。

依賴的關係的實現:介面傳遞、構造方法傳遞、setter方法傳遞。

(4)  介面隔離原則:客戶端不應該依賴它不需要的介面,一個類對另一個類的依賴應該建立在最小的介面上。

介面儘量小,但是要有限度。

為依賴介面的類定製服務,只暴露給呼叫的類它需要的方法,它不需要的方法則隱藏起來。

提高內聚,減少對外互動,writeless methods,do more things.

(5)       迪米特法則:一個物件應該對其他物件保持最少的理解。

類與類之間的關係越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。迪米特法則就是為了實現低耦合。

怎麼在程式設計中體現:

只與直接的朋友通訊,我們稱出現成員變數、方法引數、方法返回值中的類為直接的朋友,而出現在區域性變數中的類則不是直接的朋友。也就是說,陌生的類最好不要作為區域性變數的形式出現在類的內部。

(6)       開閉原則:對擴充套件開放,對修改關閉。

單一職責原則:職責單一。

里氏替換原則:不要破壞繼承體系結構。

依賴倒置原則:面向介面程式設計

介面隔離原則:設計介面時要精簡單一。

迪米特原則:降低耦合

者五個原則都是開源原則的注意事項,開閉原則是一切程式設計的出發點和目的。

設計模式雖好,但是也要有個度,避免過度設計的危險。