1. 程式人生 > 其它 >面向物件的設計的7大原則

面向物件的設計的7大原則


面向物件的設計原則(7大原則)

★ 1、開閉原則: 是總綱,告訴我們要對擴充套件開放,對修改關閉;

★ 2、里氏替換原則: 告訴我們不要破壞繼承體系;

★ 3、依賴倒置原則:告訴我們不要破壞繼承體系;

★ 4、單一職責原則: 告訴我們實現類/方法要職責單一;

★ 5、介面隔離原則: 告訴我們在設計介面的時候要精簡單一;

★ 6、迪米特法則:告訴我們要降低耦合度;

★ 7、合成複用原則:告訴我們要優先使用組合或者聚合關係複用,少用繼承關係複用。






1、開閉原則

是總綱,告訴我們要對擴充套件開放,對修改關閉;

■ 實現:
通過“抽象約束、封裝變化”來實現開閉原則,即通過介面或者抽象類為軟體實體定義一個相對穩定的抽象層

,而將相同的可變因素封裝在相同的具體實現類中。




2、里氏替換原則

告訴我們不要破壞繼承體系;

■ 實現:

子類繼承父類時,除新增新的方法完成新增功能外,儘量不要重寫父類的方法。




3、依賴倒置原則

告訴我們要面向介面程式設計;

■ 實現:

要面向介面程式設計,不要面向實現程式設計。


▷ 更加細緻的要求:

(1)每個類儘量提供介面或抽象類,或者兩者都具備。
(2)變數的宣告型別儘量是介面或者是抽象類。
(3)任何類都不應該從具體類派生。
(4)使用繼承時儘量遵循里氏替換原則。




4、單一職責原則

告訴我們實現類要職責單一;

■ 實現:

一個類只負責一項職責,一個方法只負責處理一項事情。




5、介面隔離原則

告訴我們在設計介面的時候要精簡單一;

■ 實現:

客戶端不應該被迫依賴於它不使用的方法。

● 和單一職責原則的區別:
它和單一職責原則差不多,一個介面只服務於一個子模組或業務邏輯。只是單一職責是側重於約束類和方法。而藉口隔離側重約束介面。


▷ 更加細緻的要求:

(1)介面儘量小,但是要有限度。一個介面只服務於一個子模組或業務邏輯。
(2)為依賴介面的類定製服務。只提供呼叫者需要的方法,遮蔽不需要的方法。
(3)瞭解環境,拒絕盲從。每個專案或產品都有選定的環境因素,環境不同,介面拆分的標準就不同,深入瞭解業務邏輯。
(4)提高內聚,減少對外互動。使介面用最少的方法去完成最多的事情。




6、迪米特法則(又叫作最少知識原則)

告訴我們要降低耦合度;

■ 實現:

“只與你的直接朋友交談,不跟“陌生人”說話”。即如果兩個軟體實體無須直接通訊,那麼就不應當發生直接的相互呼叫,可以通過第三方轉發該呼叫。

□ 從依賴症和被依賴這的角度的實現:
• 從依賴者的角度來說,只依賴應該依賴的物件;
• 從被依賴者的角度說,只暴露應該暴露的方法。


▷ 更加細緻的要求:

(1)在類的劃分上,應該建立弱耦合的類。類與類之間的耦合越弱,就越有利於實現可複用的目標。
(2)在類的結構設計上,儘量降低類成員的訪問許可權。
(3)在類的設計上,優先考慮將一個類設定成不變類。
(4)在對其他類的引用上,將引用其他物件的次數降到最低。
(5)不暴露類的屬性成員,而應該提供相應的訪問器(set和get方法)。
(6)謹慎使用序列化(Serializable)功能.




7、合成複用原則(又叫組合/聚合複用原則)

告訴我們要優先使用組合或者聚合關係複用,少用繼承關係複用。

■ 實現:

合成複用原則是通過將已有的物件納入新物件中,作為新物件的成員物件來實現的,新物件可以呼叫已有物件的功能,從而達到複用。




☺ 參考文獻:《軟體設計模式(java版)---程細柱》


本文來自部落格園,作者:一樂樂,轉載請註明原文連結:https://www.cnblogs.com/shan333/p/15952615.html