學習筆記 | 設計模式 六大設計原則

01 六大設計原則

在這裏插入圖片描述

1. 單一職責原則

  • 單一職責是指一個類只負責一個職責。 一個類應該僅有一個引起它變化的原因。
  • 比如現在比較流行的微服務,就是將之前很複雜耦合性很高的業務,分成多個獨立的功能單一的簡單接口,然後通過服務編排組裝的方式實現不同的業務需求,而這種細粒度的獨立接口就是符合單一職責原則的具體實踐。

2. 開閉原則

  • 開閉原則指的是對拓展開放、對修改關閉
  • 它是說我們在實現一個新功能時,首先應該想到的是擴展原來的功能,而不是修改之前的功能。
  • 隨着軟件越做越大,對應的客戶端版本也越來越多,而這些客戶端都是安裝在用戶的手機上。因此我們不能保證所有用戶手中的 App(客戶端)都一直是最新版本的,並且也不能每次都強制用戶進行升級或者是協助用戶去升級,那麼我們在開發新功能時,就強制要求團隊人員不允許直接修改原來的老接口,而是要在原有的接口上進行擴展升級。
  • 因爲直接修改老接口帶來的隱患是老版本的 App 將不能使用,這顯然不符合我們的要求。那麼此時在老接口上進行擴展無疑是最好的解決方案,因爲這樣我們既可以滿足新業務也不用擔心新加的代碼會影響到老版本的使用。

3. 里氏替換原則

  • 里氏替換原則是面向對象(OOP)編程的實現基礎,它指的是所有引用了父類的地方都能被子類所替代,並且使用子類替代不會引發任何異常或者是錯誤的出現。

  • 比如,如果把鴕鳥歸爲了“鳥”類,那麼鴕鳥就是“鳥”的子類,但是鳥類會飛,而鴕鳥不會飛,那麼鴕鳥就違背了里氏替換原則。

4. 依賴倒置原則

  • 依賴倒置原則指的是要針對接口編程,而不是面向具體的實現編程。

  • 也就說高層模塊不應該依賴底層模塊,因爲底層模塊的職責通常更單一,不足以應對高層模塊的變動,因此我們在實現時,應該依賴高層模塊而非底層模塊。

  • 比如我們要從 A 地點去往 B 地點,此時應該掏出手機預約一個“車”,而這個“車”就是一個頂級的接口,它的實現類可以是各種各樣的車,不同廠商的車甚至是不同顏色的車,而不應該依賴於某一個具體的車。例如,我們依賴某個車牌爲 XXX 的車,那麼一旦這輛車發生了故障或者這輛車正拉着其他乘客,就會對我的出行帶來不便。所以我們應該依賴是“車”這一個頂級接口,而不是具體的某一輛車。

5. 接口隔離原則

  • 接口隔離原則是指使用多個專門的接口比使用單一的總接口要好,即接口應該是相互隔離的小接口,而不是一個臃腫且龐雜的大接口。
  • 不應該強迫客戶程序依賴它們不用的方法。
  • 使用接口隔離原則的好處是避免接口的污染,提高了程序的靈活性。
  • 可以看出,接口隔離原則和單一職責原則的概念很像,單一職責原則要求接口的職責要單一,而接口隔離原則要求接口要儘量細化,二者雖然有異曲同工之妙,但可以看出單一職責原則要求的粒度更細。

6. 迪米特法則

  • 迪米特法則又叫最少知識原則,它是指一個類對於其他類知道的越少越好。
  • 迪米特法則設計的初衷是降低類之間的耦合,讓每個類對其他類都不瞭解,因此每個類都在做自己的事情,這樣就能降低類之間的耦合性。
  • 這就好比我們在一些電視中看到的有些人在遇到強盜時,會選擇閉着眼睛不看強盜,因爲知道的信息越少反而對自己就越安全,這就是迪米特法則的基本思想。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章