大話設計模式的學習(二)

2021-09-13 13:19:44 字數 1070 閱讀 9357

1、單一職責原則;

解釋可以為:就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責太多,就等於把這些職責耦合在一塊,乙個職責的變化可能會削弱或抑制這個類完完成其他的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭到意想不到的破壞。

軟體設計真正要做的許多內容,就算發現職責併發這些職責分離出來。如果能夠想到多個乙個的動機去改變這個類,那麼這個類就有多於乙個的職責。

2、開放-封閉原則;

指軟體實體(類、模組、函式)可以擴充套件,但是不支援修改。

面對需求,對程式的改動是通過增加新**而實現,而不是修改現有的**---- (原則的精神所在)。

我們希望的是在開發工作展開不久久知道可能發生的變化。查明可能發生的變化所等待的時間越長,要建立正確的抽象就越困難。

開放-封閉原則是物件導向設計的核心所在,遵循這個原則可以帶來物件導向技術所聲稱的巨大好處,也就是可維護、可擴充套件、可復用、靈活性高。開發人員應該僅對程式中呈現出頻繁變化的那一部分做出抽象,然而,對於應用程式中的每個部分都刻意的做出抽象同樣不是乙個好的注意,拒絕不成熟的抽象和抽象本身一樣重要。

3、依賴倒轉原則;

抽象不應該依賴細節,細節應該依賴於抽象。說白了,就是要針對介面程式設計,而不是針對實現程式設計。

引出了黎克特制代換原則指乙個軟體實體如果使用的是乙個父類的化,那麼一定適用於其子類,而且它察覺不出父類物件和子類物件的區別。  也就是說,在軟體裡邊,把父類都替換成它的子類,程式的行為沒有變化。

簡單的說:子型別必須能夠替換掉它們的父型別。

依賴倒轉其實可以說是物件導向設計的標誌,用哪種語言來編寫**不重要,如果編寫時考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之就是過程化的設計了。

《大話設計模式》學習筆記二》

做乙個商場收銀的小系統。剛開始程式設計的時候,沒有想到 的可維護性,因此編出來的程式只能是正常收費的情況。當商場打算搞 那該怎麼辦呢?只好重寫程式。再次寫這個程式的時候要考慮的代買的可維護性。我們考慮一下,商場無論怎麼搞 活動,不同的僅僅是收銀時的打折處理方法,而基本的計算總價方法是相同的,不同的打...

大話設計模式(二)

6.裝飾模式 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。uml類圖關係 1 component物件抽象類 物件類 有乙個功能fun 2 decorator裝飾抽象類,繼承物件類 或物件抽象類 提供乙個最重要的setcomponent component com ...

大話設計模式 筆記二

單一職責原則 單一職責原則 srp 對於乙個類而言,應該僅有乙個引起它變化的原因。通俗的說,乙個類只能幹乙個事,只能承擔乙個職責。如果乙個類承擔的職責過多,等於把這些職責耦合在一起,這種耦合會導致設計十分的脆弱,當變化發生的時候,會遭到意想不到的破壞。開放 封閉原則 開放封閉原則,簡稱開閉原則,指軟...