天天看點

設計模式原則1.什麼是設計模式2.設計模式原則3.設計模式分類

1.什麼是設計模式

在軟體工程中,設計模式是對軟體設計中普遍存在的各種問題,所提出的 解決方案。

換句話說,設計模式是一套被反複使用、多數人知曉的、經過分類的、代碼設計的

經驗的總結。使用設計模式是為了可重用代碼,讓代碼更容易被他人了解,保證代碼可靠性。

2.設計模式原則

2.1、開閉原則(Open Close Principle)

開閉原則的意思是:對擴充開放,對修改封閉。在程式需要進行擴充的時候,不能去修改或影響原有的代碼,實作一個熱插拔的效果。簡言之,是為了使程式的擴充性更好,易于維護和更新。想要達到這樣的效果,我們需要使用接口和抽象類。

2.2、裡氏代換原則(Liskov Substitution Principle)

裡氏代換原則是面向對象設計的基本原則之一。

裡氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。裡氏代換原則是繼承複用的基石,隻有當子類可以替換掉基類,且軟體機關的功能不受到影響時,基類才能真正被複用,而且子類也能夠在基類的基礎上增加新的行為。裡氏代換原則是對開閉原則的補充。實作開閉原則的關鍵步驟就是抽象化,而基類與子類的繼承關系就是抽象化的具體實作,是以裡氏代換原則是對實作抽象化的具體步驟的規範。

2.3、依賴倒轉原則(Dependence Inversion Principle)

這個原則是開閉原則的基礎,核心内容:針對接口程式設計,高層子產品不應該依賴底層子產品,二者都應該依賴抽象而不依賴于具體。

2.4、接口隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的接口,比使用單個龐大的接口要好。其目的在于降低耦合度。由此可見,其實設計模式就是從大型軟體架構出發,便于更新和維護軟體的設計思想。它強調低依賴、低耦合。

2.5、單一職責原則(Single Responsibility Principle)

類的職責要單一,不能将太多的職責放在一個類中。

可能有的人會覺得單一職責原則和前面的接口隔離原則很相似,其實不然。其一,單一職責原則原注重的是職責;而接口隔離原則注重對接口依賴的隔離。其二,單一職責原則主要限制的是類,其次才是接口和方法,它針對的是程式中的實作和細節;而接口隔離原則主要限制接口,主要針對抽象,針對程式整體架構的建構。

2.6、最少知道原則(Demeter Principle)

最少知道原則也叫迪米特法則,就是說:一個實體應當盡量少的與其他實體之間發生互相作用,使得系統功能子產品相對獨立。

一個對象應該對其他對象保持最少的了解。類與類之間的關系越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。如果兩個類不必彼此直接通信,那麼這兩個類就不應當發生直接的互相作用。如果其中一個類需要調用另一個類的某一個方法的話,可以通過第三者轉發這個調用。是以在類的設計上,每一個類都應當盡量降低成員的通路權限。

2.7、合成複用原則(Composite Reuse Principle)

合成複用原則就是在一個新的對象裡通過關聯關系(組合關系、聚合關系)來使用一些已有的對象,使之成為新對象的一部分;新對象通過委派調用已有對象的方法達到複用功能的目的。簡而言之,盡量多使用

組合/聚合 的方式,盡量少使用甚至不使用繼承關系。

3.設計模式分類

通常來說設計模式分為三大類:

建立型模式,共5種:工廠模式、抽象工廠模式、單例模式、建造者模式、原型模式。

結構型模式,共7種:擴充卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

行為型模式,共11種:政策模式、模闆方法模式、觀察者模式、疊代子模式、責任鍊模式、指令模式、備忘錄模式、狀态模式、通路者模式、中介者模式、解釋器模式。

下面用圖檔來整體描述一下設計模式之間的關系:

繼續閱讀