設計模式學習筆記一

一、設計模式七大原則

設計模式原則,其實就是程序員在編程時,應當遵守的原則,也是各種設計模式的基礎(即:設計模式爲什麼這樣設計的依據)

設計模式常用的七大原則:

1、單一職責原則

     基本介紹:對類來說的,即一個類應該只負責一項職責。如類A負責兩個不同職責:職責1,職責2。當職責1需求變更而改變A時,可能造成職責2執行錯誤,所以需要將類A的粒度分解爲A1,A2。

    注意事項和細節:a、降低類的複雜度,一個類只負責一項職責 b、提高類的可讀性,可維護性 c、降低變更引起的風險 d、通常情況下,我們應當遵守單一職責原則,只有邏輯足夠簡單,纔可以在代碼級違反單一職責原則;只有類中方法數量足夠少,可以在方法級別保持單一職責原則

2、接口隔離原則

    基本介紹:客服端不應該依賴它不需要的接口,即一個類對另一個類的依賴應該建立在最小的接口上

3、依賴倒置(倒轉)原則

    基本介紹:依賴倒轉原則是指:a、高層模塊不應該依賴低層模塊,二者都應該依賴其抽象。b、抽象不應該依賴細節,細節應該依賴抽象。c、依賴倒轉的中心思想是面向接口編程。d、依賴倒轉原則是基於這樣的設計理念:相對於細節的多變性,抽象的東西穩定的多,以抽象爲基礎搭建的架構比以細節爲基礎的架構要穩定的多。在Java中,抽象指的是接口或抽象類,細節就是具體的實現類。e、使用接口或者抽象類的目的是制定好規範,而不涉及任何具體的操作,把展現細節的任務交給他們的實現類去完成

    注意事項和細節:a、低層模塊儘量都要有抽象類或接口,或者兩者都有,程序穩定性更好,b、變量的聲明類型儘量是抽象類或接口,這樣我們的變量應用和實際對象間,就存在一個緩衝層,利於程序擴展和優化,c、繼承時遵循里氏替換原則

4、里氏替換原則

    基本介紹:里氏替換原則在1988年,由麻省理工學院的一位姓裏的女士提出的。如果對每個類型爲T1的對象o1,都有類型爲T2的對象o2,使得以T1定義的所有程序P在所有的對象o1都代換成o2時,程序P的行爲沒有發生變化,那麼類型T2時類型T1的子類型。換句話說,所有引用基類的地方必須能透明地使用其子類的對象。在使用繼承時,遵循里氏替換原則,在子類中儘量不要重寫父類的方法。里氏替換原則告訴我們,繼承實際上讓兩個類耦合性增強了,在適當的情況下,可以通過聚合,組合,依賴來解決問題。

5、開閉原則

     基本介紹:開閉原則是編程中最基礎、最重要的設計原則,一個軟件實體如類,模塊和函數應該對擴展開放(提供方),對修改關閉(使用方)。用抽象構建框架,用實現擴展細節。當軟件需要變化時,儘量通過擴展軟件實體的行爲來實現變化,而不是通過修改已有的代碼來實現變化。編程中遵循其它原則,以及使用設計模式的目的就是遵循開閉原則

6、迪米特法則

    基本介紹:一個對象應該對其他對象保持最少的瞭解。類與類關係越密切,耦合度越大。迪米特法則又叫最少知道原則,即一個類對自己依賴的類知道的越少越好,也就是說,對於被依賴的類不管多麼複雜,都儘量將邏輯封裝在類的內部。對外除了提供的public方法,不對外泄露任何信息。更簡單的定義:只與直接的朋友通信;

      直接的朋友:每個對象都會與其他對象又耦合關係,只要兩個對象之間有耦合關係,我們就說這兩個對象之間是朋友關係。耦合的方式很多,依賴、關聯、組合、聚合等。其中,我們稱出現成員變量,方法參數,方法返回值中的類爲直接朋友,而出現在局部變量中的類不是直接的朋友。也就是說,陌生的類最好不要以局部變量的形式出現在類的內部

7、合成複用原則

      基本介紹:合成複用原則是指儘量使用合成/聚合的方式,而不是使用繼承

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章