設計模式:介紹

丿沐染煙忱丶發表於2020-09-25

概念

設計模式是一套被反覆使用的、多人知曉的、經過程式碼設計經驗的總結。類似數學中的公式一樣。

設計模式的型別

總共有23種設計模式。這些模式可以分為三大類:建立型模式、結構型模式、行為型模式。

建立型模式

這些設計模式提供了一種在建立物件的同時隱藏建立邏輯的方式,而不是使用new運算子直接例項化物件。類似封裝的思想。這使得程式在判斷針對某個給定例項需要建立哪些物件時更加靈活。

包括:工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式

這些設計模式關注類和物件的組合。繼承的概念被用來組合介面和定義組合物件獲得新功能的方式。

包括:介面卡模式、橋接模式、過濾器模式、組合模式、裝飾器模式、外觀模式、享元模式、代理模式。

行為型模式

這些設計模式特別關注物件之間的通訊。

包括:責任鏈模式、命令模式、直譯器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、空物件模式、策略模式、模板模式、訪問者模式

六大原則

  • 開閉原則:對擴充套件開放,對修改關閉。通過開閉原則,我們可以通過擴充套件行為開實現新的功能,而不是通過修改已有的程式碼。
  • 里氏代換原則:所有父類可以出現的地方,子類就都可以出現,使用子類來替換父類,呼叫方不需要關心目前傳遞的父類還是子類。通過繼承,實現了程式碼的共享和複用。但是繼承是強侵入性的,子類必須擁有父類所有的非私有屬性和方法,在一定程度上降低了子類的靈活性。通過里氏替換,我們可以將子類物件作為父類物件來使用,遮蔽了不同子類物件之間的差異,寫出通用的程式碼,做出通用的程式設計,以適應需求的不斷變化。里氏替換之後,父類的物件就可以根據當前賦值給它的子類物件的特性以不同的方式運作。
  • 依賴倒轉原則:高層模組不應該依賴於底層模組,抽象不應該依賴細節,細節應該依賴抽象。在java中,介面和抽象類都是抽象,而其實現類就是細節。也就是說,我們應該做到面向介面程式設計,而非面向實現程式設計。
  • 介面隔離原則:使用多個隔離的介面,比使用單個介面要好。即降低類之間的耦合度。
  • 迪米特法則:一個實體應當儘量少地與其他實體之間發生相互作用,使得系統功能模組相對獨立。
  • 單一職責原則:單一職責規定了一個類應該只有一個發生變化的原因。如果一個類承擔了多個職責,則會導致多個職責耦合在一起。但部分職責發生變化的時候,可能會導致其餘職責跟著受到影響,也就是說我們的程式耦合性太強,不利於變化。

相關文章