設計模式目的和原則

一、設計模式目的

爲了讓我們設計的軟件或者代碼 在 高內聚低耦合、便於維護、擴展性強、代碼重用性高 等方面變的更好

二、設計模式六大原則

單一職責原則 、接口隔離原則、依賴反轉原則、里氏替換原則、開閉原則 【ocp原則】、迪米特法則、合成複用原則

  1. 單一職責
    
    概述:一個類負責一項職責,設計多個方法時,一個方法負責一個功能
    好處:降低類的複雜度 ,提高類的可讀性,可維護性
  2. 接口隔離
    
    概述:根據不同的用途,應該創建不同的接口,實現類只需要依賴自己需要實現的接口,不應該依賴不需要的接口
  3. 依賴反轉
    

1、核心思想就是面向抽象【接口和抽象類】編程,因爲抽象比細節穩定的多,以抽象爲基礎搭建的架構更加穩定
2、高層模塊不應該依賴低層的模塊
3、抽象不依賴細節,細節依賴抽象
4、使用接口或者抽象類制定好規範,而不涉及任何具體的操作,方便後期維護
5、變量的聲明儘量是接口或者抽象類,有利於程序的擴展和優化

  1. 里氏替換
    
    提出背景:

面向對象中關於繼承的使用思考
1)繼承包含這樣一層含義:父類中凡是已經實現好的方法,實際上是在設定規範和契約,雖然它不強制要求所有的子類必須遵循這些契約,但是如果子類對這些已經實現的方法任意修改,就會對整個繼承體系造成破壞。
2)繼承在給程序設計帶來便利的同時,也帶來了弊端。比如使用繼承會給程序帶來侵入性,程序的可移植性降低,增加對象間的耦合性,如果一個類被其他的類所繼承,則當這個類需要修改時,必須考慮到所有的子類,並且父類修改後,所有涉及到子類的功能都有可能產生故障

里氏替換原則:
我們定義的方法中,使用了父類作爲參數,當我們實際傳遞的參數是其具體的子類時,這個方法的功能沒有發生變化【也就是說:所有引用父類的地方,必須能使用子類的對象】,

總結:適當情況下,我們可以通過聚合、組合、依賴來替換繼承

  1. 開閉原則 
    

    編程中最基礎、最重要的設計原則:一個軟件實體如類、模塊、函數 ,應該對擴展開放(對開發者自己),對修改關閉(對使用方,不可修改)
    當需求發生變化時,儘量通過添加實現類的方法,而不是通過修改已有代碼

  2. 迪米特法則:
    

1)一個對象應該對其他對象保持最少的瞭解
2)類與類關係越密切,耦合度越大
3)迪米特法則(Demeter Principle)又叫最少知道原則,即一個類對自己依賴的類知道的越少越好。也就是說,對於被依賴的類不管多麼複雜,都儘量將邏輯封裝在類的內部。對外除了提供的 public 方法,不對外泄露任何信息
4)迪米特法則還有個更簡單的定義:只與直接的朋友通信
5)直接的朋友:每個對象都會與其他對象有耦合關係,只要兩個對象之間有耦合關係,我們就說這兩個對象之間是朋友關係。耦合的方式很多,依賴,關聯,組合,聚合等。其中,我們稱出現成員變量,方法參數,方法返回值中的類爲直接的朋友,而出現在局部變量中的類不是直接的朋友。也就是說,陌生的類最好不要以局部變量的形式出現在類的內部。

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