作業二 軟體設計原則 設計模式

2022-10-06 18:48:12 字數 3111 閱讀 8428

| 這個作業屬於哪個課程 | |

| 這個作業要求在**| |

| 這個作業的目標 | 理解軟體設計原則、設計模式 |

《大話設計模式(pdf)》程杰

1.乙個軟體實體如類、模組函式應該對擴充套件開放,對修改關閉。

2.強調用抽象構建框架,用實現擴充套件細節。生活中的例項(彈性工作制,每天必須工作滿八小時這個是不能修改的,但是對於什麼時候來什麼時候走沒有規定)。

1.高層模組不應該依賴低層模組,兩者都應該依賴其抽象。

2.抽象不應該依賴細節,細節應該依賴抽象。

3.每乙個邏輯的實現都是由原子邏輯組成的,不可分割的原子邏輯就是低層模組(一般是介面,抽象類),原子邏輯的組裝就是高層模組。

1.不要存在多於乙個導致類變更的原因。

(若承擔過多職責:1.乙個職責的變化可能會影響、削弱或者抑制這個類實現其他職責的能力;

2.當客戶端需要該物件的某乙個職責時,不得不將其他不需要的職責全都包含進來,從而造成冗餘**或**的浪費;)

1.用多個專門的介面,而不使用單一的總介面,客戶端不應該依賴它不需要的介面。

2.乙個類對應乙個類的依賴應該建立在最小的介面上。

3.建立單一介面,不要建立龐大臃腫的介面。

4.盡量細化介面,介面中的方法盡量少。

5.適度原則,一定要適度。

1.乙個物件對其他物件保持最少的了解,盡量降低類與類之間的耦合,強調只與相關類交流。

2.相關類指的是出現在成員變數、方法的輸入、輸出引數中的類。

1.子類可以擴充套件父類的功能,但不能改變父類原有的功能。即:子類繼承父類時,除新增新的方法完成新增功能外,盡量不要重寫父類的方法。

1.盡量使用物件組合/聚合,而不是繼承關係達到軟體復用的目的。

1.工廠方法模式

定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類,使乙個類的例項化延遲到其子類。

2.抽象工廠模式

提供乙個建立一系列相關或相互依賴物件的介面,而無須指定它們具體的類。屬於物件建立型模式。

3.單例模式

單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項,這個類稱為單例類,它提供全域性訪問的方法。

4.建造者模式

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式將部件和其組裝過程分開,一步一步建立乙個複雜的物件。使用者只需要指定複雜物件的型別就可以得到該物件,而無須知道其內部的具體構造細節。

5.原型模式

用原型例項指定建立物件的種類,並且通過複製這些原型建立新的物件。原型模式允許乙個物件再建立另外乙個可定製的物件,無須知道任何建立的細節。

1.介面卡模式

將乙個類的介面轉換成客戶希望的另外乙個介面。使得原本不相容的介面可以協同工作。

2.裝飾器模式

動態地給乙個物件新增一些額外的職責。提供了用子類擴充套件功能的乙個靈活的替代,但比生成子類更為靈活。 裝飾模式可以在不需要創造更多子類的情況下,將物件的功能加以擴充套件。

3.**模式

給某乙個物件提供乙個**,並由**物件控制對原物件的引用。

4.外觀模式

定義了乙個高層介面,為子系統中的一組介面提供乙個一致的介面,從而簡化子系統的使用。

5.橋接模式

將抽象部分與它的實現部分分離,使它們都可以獨立地變化。

6.組合模式

將物件組合成樹形結構以表示「部分-整體」的層次結構。使得使用者對單個物件和組合物件的使用具有一致性。 組合模式描述了如何將容器物件和葉子物件進行遞迴組合,使得使用者在使用時無須對它們進行區分,可以一致地對待容器物件和葉子物件。

7.享元模式

提供支援大量細粒度物件共享的有效方法。物件導向技術可以很好地解決靈活性或可擴充套件性問題,但在很多情況下需要在系統中增加類和物件的個數。當物件數量太多時,將導致執行代價過高,帶來效能下降等問題。

1.策略模式

定義一系列的演算法,把它們乙個個封裝起來,並且使它們可相互替換。本模式使得演算法可獨立於使用它的客戶而變化。

2.模板方法模式

定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

3.觀察者模式

定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

4.迭代器模式

提供一種方法順序訪問乙個聚合物件中各個元素,而又不需暴露該物件的內部表示。

5.責任鏈模式

使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

6.命令模式

將乙個請求封裝為乙個物件,從而使你可用不同的請求對客戶進行引數化。對命令進行封裝,將發出命令的責任和執行命令的責任分割開。

7.備忘錄模式

在不破壞封裝性的前提下,捕獲乙個物件的內部狀態,並在該物件之外儲存這個狀態。這樣以後就可將該物件恢復到原先儲存的狀態。

8.狀態模式

允許乙個物件在其內部狀態改變時改變它的行為。物件看起來似乎修改了它的類。

9.訪問者模式

表示乙個作用於某物件結構中的各元素的操作,它使我們可以在不改變各元素的類的前提下定義作用於這些元素的新操作。

10.中介者模式

用乙個中介物件來封裝一系列的物件互動。中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。

11.直譯器模式

定義語言的文法,並且建立乙個直譯器來解釋該語言中的句子,這裡的「語言」意思是使用規定格式和語法的**。

本人參與設計的專案很少,但對於設計原則以及設計模式的運用稍有印象,但具體的模式使用並未理解透徹。

通過對軟體設計原則以及設計模式的粗略學習,了解到設計模式實際上是對物件導向設計原則的實際運用,表明了對物件導向三大特性的充分理解。充分表示了類的封裝性、繼承性、多型性以及類與類之間的關聯關係以及組合關係,且設計模式的運用可以提高程式設計師的思維模式、程式設計能力以及設計能力,使得程式標準化,**編寫工程化,也可提高**重用性、可讀性、可靠性、靈活性以及可維護性。而設計原則可作為設計標準,可用於指導設計的優劣,且基於設計原則進行設計會使得設計的思路更為清晰。但設計原則也只是基礎,不可照搬,需要我們自己設計的過程中逐步積累,融會貫通。

作業二 軟體設計原則 設計模式

這個作業屬於哪個課程 2022軟體 開發技術 這個作業要求在 作業2 這個作業的目標 1.開閉原則 對外使用開放,對內不可以進行修改的原則,不會改變對原來已經有的類的方式來實現新的功能,而是利用抽象出來的新的介面,或者是繼承抽象類的方式來實現。最大的優點在於可以不修改源 的基礎上,通過增加新的介面來...

設計模式 軟體設計原則

軟體設計六大原則 一 單一職責原則 srp 意思是就乙個類而言只有乙個改變類的起因和動機 遵循單一職責 1.可以降低類的複雜度,乙個類只負責一項職責,其邏輯肯定要比負責多項職責簡單的多 2.提高類可維護性,系統的可擴充套件性 3.變更引起的風險降低,當修改乙個功能時,可以顯著降低對其他功能的影響。二...

軟體設計原則 設計模式

定義 高層模組不能依賴底層模組,二者應該依賴其抽象 抽象不依賴細節,細節應該依賴抽象 優點 減少類之間的耦合性,提高系統穩定性 可讀性和可維護性,降低修改程式帶來的風險 定義 不要存在多於乙個導致類變更的原因,乙個類 介面 方法只負責一項職責 優點 降低類的複雜度 提高類的可讀性,提高系統的可維護性...