面向對象設計基本原則


設計原則名稱

設計原則簡介

重要性

單一職責原則

類的職責要單一,不能將太多的職責放在一個類中

★★★★☆

開閉原則

軟件實體對擴展是開放的,但對修改是關閉的,即在不修改一

個軟件實體的基礎上去擴展其功能

★★★★★

里氏代換原則

在軟件系統中,一個可以接受基類對象的地方必然可以接受一

個子類對象

★★★★☆

依賴倒轉原則

要針對抽象層編程,而不要針對具體類編程

★★★★★

接口隔離原則

使用多個專門的接口來取代一個統一的接口

★★☆☆☆

合成復用原則

在系統中應該盡量多使用組合和聚合關聯關系,盡量少使用甚

至不使用繼承關系

★★★★☆

迪米特法則

一個軟件實體對其他實體的引用越少越好,或者說如果兩個類

不必彼此直接通信,那么這兩個類就不應當發生直接的相互作

用,而是通過引入一個第三者發生間接交互

★★★☆☆

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.單一職責原則

(Single Responsibility Principle, SRP)定義如下:

  一個對象應該只包含單一的職責,並且該職責被完整地封裝在一個類中。

另一種定義方式如下:

  就一個類而言,應該僅有一個引起它變化的原因。

2.開閉原則

  (Open-Closed Principle, OCP)定義如下:

  一個軟件實體應當對擴展開放,對修改關閉。也就是說在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展,即實現在不修改源代碼的情況下改變這個模塊的行為。

3.里氏代換原則定義  

  所有引用基類(父類)的地方必須能透明地使用其子類的對象。

4.依賴倒轉原則

(Dependence Inversion Principle, DIP)的定義如下:

  高層模塊不應該依賴低層模塊,它們都應該依賴抽象。抽象不應該依賴於細節,細節應該依賴於抽象。

  另一種定義方式如下:

  要針對接口編程,不要針對實現編程。

5.接口隔離原則定義

  接口隔離原則(Interface Segregation Principle, ISP)的定義如下:

  • 客戶端不應該依賴那些它不需要的接口。

  另一種定義方法如下:

  • 一旦一個接口太大,則需要將它分割成一些更細小的接口,使用該接口的客戶端僅需知道與之相關的方法即可。

6.合成復用原則

  (Composite Reuse Principle, CRP)又稱為組合/聚合復用原則(Composition/ Aggregate Reuse Principle, CARP),其定義如下:

  盡量使用對象組合,而不是繼承來達到復用的目的。

7.迪米特法則

(Law of Demeter, LoD)又稱為最少知識原則(Least Knowledge Principle, LKP)

它有多種定義方法,其中幾種典型定義如下:

(1) 不要和“陌生人”說話。英文定義為:Don't talk to strangers.

(2) 只與你的直接朋友通信。英文定義為:Talk only to your immediate friends.

(3) 每一個軟件單位對其他的單位都只有最少的知識,而且局限於那些與本單位密切相關的軟件單位。英文定義為:Each unit should have only limited knowledge about other units: only units "closely" related to the current unit.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM