詳解設計模式概念,實現,類別,學習目的

1.什麼是設計模式?

設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結。
使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。 設計模式使代碼編寫真正工程化;設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。
爲什麼要提倡“Design Pattern呢?根本原因是爲了代碼複用,增加可維護性。

2.怎麼實現?

爲了實現代碼複用,增加可維護性,設計模式提出了六大原則。

單一職責原則
不要存在多於一個導致類變更的原因,也就是說每個類應該實現單一的職責,否則就應該把類拆分。

里氏替換原則
任何基類可以出現的地方,子類一定可以出現。通俗的來講就是:子類可以擴展父類的功能,但不能改變父類原有的功能。

依賴倒置原則
高層模塊不應該依賴低層模塊,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。
依賴倒置原則的核心就是要我們面向接口編程,理解了面向接口編程,也就理解了依賴倒置。

接口隔離原則
客戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上。
如果接口過於臃腫,只要接口中出現的方法,不管對依賴於它的類有沒有用處,實現類中都必須去實現這些方法,這顯然不是好的設計。

迪米特法則
一個對象應該對其他對象保持最少的瞭解。
類與類之間的關係越密切,耦合度越大,當一個類發生改變時,對另一個類的影響也越大。

開閉原則
一個軟件實體如類、模塊和函數應該對擴展開放,對修改關閉。
當軟件需要變化時,儘量通過擴展軟件實體的行爲來實現變化,而不是通過修改已有的代碼來實現變化。

制定這六個原則的目的並不是要我們刻板的遵守他們,而需要根據實際情況靈活運用。對他們的遵守程度只要在一個合理的範圍內,就算是良好的設計。

3. 設計模式的種類##

設計模式分爲三大類:
創建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。

4.爲什麼要學設計模式

我們之所以要學習設計模式,並不是把具體的某些模式原原本本地照搬來用,而是通過學習這些模式,瞭解到底什麼是“封裝變化”,“對象間松耦合”,“針對接口編程”等概念,從而設計出符合前面所講到四個特性——易維護,易擴展,易服用,靈活性好的程序。

在《大話設計模式》這本書中,說道學習設計模式有四個層次,分別是

  1. 沒學之前是一點不懂,根本想不到用設計模式,寫出的代碼很糟糕;
  2. 學了幾個模式之後,於是總想着要用自己學過的模式,於是時常造成誤用模式而自己卻不知道;
  3. 學完全部的模式之後,感覺模式之間都很相似,分不清差異,有困惑,但深知誤用設計模式的害處,應用之時很猶豫
  4. 靈活應用模式,甚至不應用具體的某種模式也能設計出非常優秀的代碼,以達到無劍勝有劍的境界。

希望以後能達到第四種境界,加油。

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