設計模式3 原則

2021-10-04 08:59:18 字數 1014 閱讀 4796

《大話設計模式》的第3,4,5章沒有聊到具體的模式,而是講到了幾個原則。這幾個原則特別有助於我理解設計模式,所以總結在此篇。

2.1 單一職責原則

單一職責原則(srp),就乙個類而言,應該僅有乙個引起它變化的原因。

2.2 理解

對於遊戲邏輯,抽象成二位陣列的判斷;對於介面就是窗體類的變化。

這樣的好處是,如果要修改遊戲邏輯,那就修改遊戲邏輯的類;如果要修改視窗,那就修改窗體類。

總而言之,單一職責原則幫助指明了如何進行分類的原則:即就是,如果能夠想到多餘乙個的動機去改變乙個類,那麼這個類就具有多於一整個職責,就應該考慮類的職責分離,也即就是新建立乙個類。

做到單一職責原則的好處無需贅言:**真正的易維護,易擴充套件,易復用,靈活多樣

開放封閉原則已在設計模式1:簡單工廠模式中寫過。

4.1 依賴倒轉原則

a.高層模組不應該依賴低層模組。兩個都應該依賴抽象

b.抽象不應該依賴細節。細節應該依賴抽象

4.2 理解

我對依賴倒轉的理解分為兩步,即提出兩個問題:1.誰依賴誰?2.怎麼倒轉的?

誰依賴誰?

在依賴倒轉之前,高層模組依賴底層模組。具體而言即就是依賴低層模組的具體實現。

怎麼倒轉的?

現在讓高層模組和低層模組都依賴於抽象,具體而言就是介面或抽象類,只要抽象是穩定的,那麼無論是高層還是低層實現細節更改,都不擔心相互之間受到影響。我理解,現在低層模組也有了依賴,那麼依賴的「方向」倒轉了。

5.1 問題

為什麼可以進行依賴倒轉?也就是,為什麼可以依賴了抽象的介面或者抽象類,再去更改高層,低層實現的時候,就沒問題?

黎克特制替換原則給了答案

5.2 黎克特制替換原則

子型別必須能夠替換掉它們的父型別

只有當子類可以替換掉父類,軟體單位的功能不受影響時,父類才能真正被復用,而子類也能夠在父類的基礎上增加新的行為。

設計模式(3) OOP原則

從最開始接觸的python到現在的c 這些都是物件導向的程式語言,那麼什麼是物件導向程式設計呢?在最開始學習python的時候,一直都在學習基本的資料結構,依然是面向過程程式設計,很難對程式語言有較深的理解,在學習c 的時候,我漸漸開始接觸類 介面等概念,然而真正開始理解並應用這些概念可花費了不少時...

設計模式 3 依賴倒轉原則

依賴關係傳遞的三種方式 完成person接收訊息的功能 public class dependecyinversion class email class person 方式1分析簡單,比較容易想到 解決思路 引入乙個抽象的介面ireceiver,表示接收者,這樣person類與介面ireceive...

設計模式 設計模式原則

1 單一職責原則 srp 乙個類應當只有乙個引起其變化的原因。使用單一職責原則的好處有 1 類的複雜性降低 2 可讀性提高 3 可維護性提高 4 變更引起的風險降低 2 黎克特制替換原則 lsp 在使用父類的地方,可以使用其子類替換。黎克特制替換原則的含義 1 子類必須完全實現父類的方法 2 子類可...