第二章 物件導向設計原則

2021-06-22 13:43:50 字數 1821 閱讀 2767

(一)如何衡量軟體設計的質量

內聚度:

表示乙個應用程式的單個單元所負責的任務數量和多樣性。內聚與單個類或者單個方法單元相關。(好的軟體設計應該做到高內聚。)

耦合度

耦合度表示類之間關係的緊密程度。低耦合是指盡量使用抽象耦合,少用具體耦合。

設計原則名稱設計原則簡介重要性

單一職責原則

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

★★★★☆

開閉原則

軟體實體對擴充套件是開放的,但對修改是關閉的,即在不修改乙個軟體實體的基礎上去擴充套件其功能。 

★★★★★

歷史替換原則

在軟體系統中,乙個可以接受基類物件的地方必然可以接受乙個子類物件。 

★★★★☆ 

依賴倒轉原則

要針對抽象層程式設計,而不要針對具體類程式設計。 

★★★★★ 

介面隔離原則 

用多個專門的介面來取代乙個統一的介面。 

★★☆☆☆

組合/聚合復用原則

在系統中應該盡量多使用組合和聚合關聯關係,盡量少使用甚至不使用繼承關係。 

★★★★☆ 

迪公尺特法則

乙個軟體實體對其他實體的引用越少越好,或者說如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用,而是通過引入乙個第三者發生間接互動。 

★★★☆☆ 

一)單一職責(single responsibility principle,srp):

乙個類而言,應該僅有乙個引起它變化的原因,永遠不要讓乙個類存在多個改變的理由。乙個類只應該做和乙個任務相關的業務,不應該把過多的業務放在乙個類中完成。

二)開閉原則(open-close principle,簡稱ocp):

是指乙個軟體實體(類、模組、方法等)應該對擴充套件開放,對修改關閉。開閉原則是設計原則的核心原則。

三)黎克特制替換原則(the liskov substitution principle,lsp):

子類應該能夠完全替換任何父類能夠出現的地方,並且經過替換後,不會讓呼叫父類的客戶程式從行為上有任何改變。

四)依賴倒轉原則 ((dependency inversion principle,簡稱dip)):

高層模組不應該依賴於低層模組,二者都應該依賴於抽象;

抽象不應該依賴於細節,細節應該依賴於抽象。 

也就是面向抽象程式設計,不要面向具體程式設計

五)組合/聚合復用原則(composite/aggregation reuse principle,carp):

是指要盡量使用組合/聚合實現**復用,少用繼承來達到復用目的。

六)介面隔離原則 (inte***ce segregation principle,簡稱isp):

是指客戶不應該依賴它們用不到的方法,只給每個客戶它所需要的介面。換句話說,就是不能強迫使用者去依賴那些他們不使用的介面。也就是使用專門的介面,比用乙個統一的介面好

七)迪公尺特法則 (law of demeter,簡稱lod):

乙個軟體實體應當盡可能少的與其他實體發生相互作用。 (不要與陌生人說話!)

第二章 物件導向

1 資料型別 簡單資料型別 byte short int long float double char bool 組合資料型別 struct enum class 值型別 內部資料變化不改變外部資料 struct int float 引用型別 內部資料變化改變外部資料 陣列 指標 class 2 變...

物件導向軟體工程 第二章

首先,實際軟體開發中有很多變數,開發者會犯錯,環境也會改變,客戶也可能犯錯,因此就有各種各樣的模型用以減小變數帶來的損失。1.首先是進化樹模型,它等價與增量 迭代模型,可以理解為最終結果是由不斷新增元件所組成的 增量 而每次新增元件的過程中需要不斷優化,更新元件 迭代 每個增量與迭代都擁有屬於自己的...

物件導向設計原則二

單一職責原則 srp 乙個類應當只有乙個改變的原因,類只需要知道一件事情,它們應當有乙個單獨的職責,要點就是當乙個類需要改變時,應當只有乙個原因。開放 封閉原則 ocp 軟體實體 類 模組 函式等 應當為擴充套件而開放,又為修改而封閉。這個原則有乙個相當詳細的定義,但是乙個簡單的意思是 你應當能夠改...