劉天樂 讀書筆記 軟體設計原則 設計模式

2022-07-03 05:30:12 字數 1749 閱讀 1675

這個作業屬於哪個課程

這個作業的要求在**

/homework/11833

這個作業的目標

學習並理解軟體設計模式及其應該遵循的設計原則

書名作者

出版社內容簡介

《大話設計模式》

程杰清華大學出版社

本書通篇都是以情景對話的形式,用多個小故事或程式設計示例來組織講解gof總結的設計模式

書中提到了幾個設計模式原則,包括:

1.單一職責原則

2.封閉-開放原則

3.依賴倒轉原則

4.黎克特制代換原則

5.迪公尺特法則

6.合成/聚合復用原則

1.單一職責原則

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

顧名思義在設計過程中,乙個類應該僅負責一件事情。

一是如果乙個類負責的事情過多會導致類太臃腫,難以維護;二是負責的事情太多,那麼引起該類變化的原因也會增多,這會導致該類頻繁地修改。

2.封閉-開放原則

封閉-開放原則:軟體實體(類,模組,函式等)應該可以擴充套件,但是不可修改。

換句話說,就是設計的類,對擴充套件開放,對修改關閉。

當然,需求總是會變動的,我們也不可能一開始就考慮到全部的情況,這一原則指導在設計的類或者方法時,要友好地支援擴充套件,更好地復用已有的設計,而不是一旦有了變動只能修改原來的設計。

3.依賴倒轉原則

依賴倒轉原則:(1) 高層模組不應該依賴低層模組,兩個都應該依賴抽象。 (2) 抽象不應該依賴細節,細節應該依賴抽象。

對於第一點,我的理解是,高層模組要使用底層模組的功能,但不是直接在高層模組載入低層模組,這樣會導致兩個模組耦合在一起,而應該在高層和低層之間加入抽象(介面),這樣當低層發生變化時,高層模組是無感知的。

對於第二點,我的理解是,應該根據抽象的功能或類,實現相關細節,讓細節來依賴抽象。抽象的功能不關注具體細節是如何處理和實現的。

4.黎克特制代換原則

黎克特制代換原則:子型別必須能夠替換掉他們的父型別。

只有當子類可以替換掉父類,父類才能真正被復用,而子類也可以在父類的基礎上增加新行為。

我們使用類時,一般直接使用父型別。當傳入具體的子型別時,多型可以幫助我們對於具體型別的獲取。

5.迪公尺特法則

迪公尺特法則(lod):最小知識原則。如果兩個類不必彼此直接通訊,那麼兩個類就不應當發生直接的相互引用。如果需要呼叫,通過第三方**這個呼叫。

迪公尺特法則根本思想是降低類和類之間的耦合。有利於復用,易維護。

6.合成/聚合復用原則

合成/聚合復用原則:盡量使用合成/聚合,盡量不要使用繼承。

合成:一種」強」擁有關係,嚴格體現了整體和部分,生命週期一致。如:大雁和翅膀

聚合:一種」弱」擁有關係,體現a物件可以包含b,但是b不是a的一部分。如: 雁群和大雁

優先使用合成/聚合進行類的封裝,使用繼承時必須時is—a的關係。

以上介紹了設計模式的幾個原則,作為我們進行類、函式等設計時的指導。針對具體情況具體分析,設計出可維護,可擴充套件,可復用,靈活性好的物件導向的結構,但是也不要過分設計,不要為**新增基於猜測、實際不需要的功能。

讀書筆記 軟體設計原則 設計模式

設計模式 可復用物件導向軟體的基礎 這些原則並不是必須要嚴格遵守的,但謹記這些原則會讓我們設計出更好的 christopher alexander說過 每乙個模式描述了乙個在我們周圍不斷重 生的問題,以及解決該問題的解決方案的核心 一般而言,乙個模式有四個基本描述 結構型模式 行為型模式 參考個人部...

讀書筆記 軟體設計原則 設計模式

讀書筆記 軟體設計原則 設計模式 這個作業屬於哪個課程 這個作業要求在 homework 11833 這個作業的目標 學習軟體設計模式相關原則 筆記 設計模式的六大原則 開閉原則 對拓展開放,對修改關閉 在程式需要進行拓展的時候,不能去修改原有的 實現乙個熱插拔的效果。簡而言之,就是為了使程式的拓展...

讀書筆記 軟體設計原則 設計模式

這個作業屬於哪個課程 這個作業要求在 homework 11833 這個作業的目標 讓學生了解和學習軟體設計的原則 模式,並結合自身開發經歷加深對相應知識的理解 參考書籍 game programming patterns robert nystrom 內容簡介 許多遊戲程式設計師因為它們自己的 太...