[.net 物件導向程式設計深入](18)實戰設計模式——設計模式使用場景及原則

yubinfeng發表於2017-03-11

[.net 物件導向程式設計深入](18)實戰設計模式——設計模式使用場景及原則

1,什麼是設計模式?

設計模式(Design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、程式碼設計經驗的總結。

使用設計模式是為了可重用程式碼、讓程式碼更容易被他人理解、保證程式碼可靠性。

設計模式並不是具體的某一技術,而且通過物件導向的特性:封裝、繼承、多型經過前輩的經驗總結出來的一套程式設計方法。

就像武林高手學武功一樣,再高深的外功都是拳、腳、掌、指和刀、槍、棍、棒打出來的,那為什麼降龍掌法和打狗棒法就那麼厲害呢?

那就是各種基礎特性經過完美組合的緣故,寫程式碼也一樣,合適的場景使用合適的設計模式,能大大提升程式碼複用性和可靠性。

2,常用設計模式

總體來說設計模式分為三大類: 

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

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

行為型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式。 

(附23種設計模式 彩圖)

3,設計模式原則

(1)、開閉原則(Open Close Principle)

開閉原則就是說對擴充套件開放,對修改關閉。在程式需要進行擴充的時候,不能去修改原有的程式碼,實現一個熱插拔的效果。所以一句話概括就是:為了使程式的擴充套件性好,易於維護和升級。想要達到這樣的效果,我們需要使用介面和抽象類。

(2)、里氏代換原則(Liskov Substitution Principle)

里氏代換原則(Liskov Substitution Principle LSP)物件導向設計的基本原則之一。 里氏代換原則中說,任何基類可以出現的地方,子類一定可以出現。 LSP是繼承複用的基石,只有當衍生類可以替換掉基類,軟體單位的功能不受到影響時,基類才能真正被複用,而衍生類也能夠在基類的基礎上增加新的行為。里氏代換原則是對“開-閉”原則的補充。實現“開-閉”原則的關鍵步驟就是抽象化。而基類與子類的繼承關係就是抽象化的具體實現,所以里氏代換原則是對實現抽象化的具體步驟的規範。

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

這個是開閉原則的基礎,具體內容:真對介面程式設計,依賴於抽象而不依賴於具體。

(4)、介面隔離原則(Interface Segregation Principle)

這個原則的意思是:使用多個隔離的介面,比使用單個介面要好。還是一個降低類之間的耦合度的意思,從這兒我們看出,其實設計模式就是一個軟體的設計思想,從大型軟體架構出發,為了升級和維護方便。所以上文中多次出現:降低依賴,降低耦合。

(5)、迪米特法則(最少知道原則)(Demeter Principle)

為什麼叫最少知道原則,就是說:一個實體應當儘量少的與其他實體之間發生相互作用,使得系統功能模組相對獨立。

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

原則是儘量使用合成/聚合的方式,而不是使用繼承。

 4,總結

本篇簡單說明了一下設計模式是什麼,有哪些常用的設計模式及設計模式使用原則。這些都是基礎概念,百度一下有很多,很長的篇幅介紹,這是簡單介紹便於快速瞭解,詳細的理解需要熟練使用常用設計模式之後了。

==============================================================================================

返回目錄

<如果對你有幫助,記得點一下推薦哦,如有有不明白或錯誤之處,請多交流>

<對本系列文章閱讀有困難的朋友,請先看 《.net 物件導向程式設計基礎》 和 《.net 物件導向程式設計進階》 >

<轉載宣告:技術需要共享精神,歡迎轉載本部落格中的文章,但請註明版權及URL>

.NET 技術交流群:467189533 H.NET 技術交流群

==============================================================================================

相關文章