設計模式簡介以及六大原則

歡迎來到大鵬的IT世界,本文給大家分享的是設計模式簡介以及六大原則。保持專注,持續學習,你就比別人強。

一、設計模式簡介:

1994年,GOF四人幫在他們出版的《設計模式 - 可複用的面向對象軟件元素》一書中首次提出了設計模式的概念。

那大家思考一個問題,什麼是設計模式?爲什麼要有設計模式?

大家都知道,軟件開發過程中經常會遇到需求變動,後期維護等問題,所以我們設計的代碼要擴展性好,易於維護和升級。設計模式就提供了軟件開發過程中所遇到的一般問題的最佳解決方案。說白了就是前輩們把工作中遇到的一些問題和解決方法進行歸納總結,提出了一種答案的模板,我們學習了設計模式後,在開發過程中遇到了類似的問題,就可以直接照着模板去設計我們的代碼。

另一方面,設計模式也提供了一種代碼設計的標準,也可以理解爲行業通用術語,這樣大家在討論溝通的過程中可以處於同一頻道上,彼此會有一種你說的話我都理解的默契。大家可以想象一下,一個懂設計模式的人和一個不懂設計模式的人在一起討論問題,然後懂設計模式的人說用觀察者模式解決吧,然後另一個人完全不知所云,還得向他解釋半天什麼是觀察者模式,這就無法溝通。體現在閱讀他人代碼方面,就是,如果不懂設計模式,你根本讀不懂高手們寫的代碼,所以在閱讀那些開源代碼的時候,你會經常疑惑,這兒爲什麼要寫這個接口,這個接口貌似有點多餘。

所以設計模式是軟件開發人員從菜鳥進階到高級的一個必經之路,很多同學覺得設計模式很高大上,有一種畏懼心理,其實完全沒必要,很多事情都是會者不難難者不會,只要靜下心來一步一步去學習,多多實踐,必然會成爲高手。

二、設計模式的三大類型:

1.創建型模式:單例模式、簡單工廠模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。   

這些設計模式提供了一種在創建對象的同時隱藏創建邏輯的方式,而不是使用 new 運算符直接實例化對象。這使得程序在判斷針對某個給定實例需要創建哪些對象時更加靈活。

2.結構型模式:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。

這些設計模式關注類和對象的組合。繼承的概念被用來組合接口和定義組合對象獲得新功能的方式。

3.行爲型模式:策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

這些設計模式特別關注對象之間的通信。

三、設計模式的六大原則:

1.單一職責原則

單一職責原則是指:就一個類而言,應該僅有一個引起它變化的原因。如果一個類承擔的職責過多,就等於把這些職責耦合在一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當變化發生時,設計會遭受意想不到的破壞。軟件設計真正要做的許多工作,就是發現職責並把這些職責分離。

2.開閉原則

開閉原則的意思是:對擴展開放,對修改關閉。在程序需要進行拓展的時候,不能去修改原有的代碼,實現一個熱插拔的效果。簡言之,是爲了使程序的擴展性好,易於維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類,去把那些變化的部分抽象出來,這樣如果以後需要增加相似的功能,只需要增加新代碼就可以實現,而不是更改現有的代碼。

3.里氏代換原則

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

4.依賴倒轉原則

這個原則是開閉原則的基礎,具體內容:針對接口編程,依賴於抽象而不依賴於具體。

5.接口隔離原則

這個原則的意思是:使用多個隔離的接口,比使用單個接口要好。它還有另外一個意思是:降低類之間的耦合度。由此可見,其實設計模式就是從大型軟件架構出發、便於升級和維護的軟件設計思想,它強調降低依賴,降低耦合。

6.迪米特法則,又稱最少知道原則

最少知道原則是指:一個實體應當儘量少地與其他實體之間發生相互作用,使得系統功能模塊相對獨立。它的根本思想是強調類之間的鬆耦合。

7.其實還有一個原則:合成複用原則

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


歡迎大家的觀看,希望能幫到大家。接下來我會把設計模式好好整理一下。

下集不預告,直接點擊繼續欣賞:設計模式之單例模式


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