設計模式就該這麼學:爲何要學設計模式?(開篇漫談) 設計模式就該這麼學:爲何要學設計模式?(開篇漫談) 設計模式就該這麼學:要走心才能遵循設計模式五大原則(第二篇) 設計模式就該這麼學:以微信訂閱

引子:想象一下一個廚師,不學菜名如何跟人快速的交流。回鍋肉,魚香肉絲,龍井蝦仁,獅子頭,叫花雞。請你換一種方式來介紹試試看。html

  設計模式也是,做爲程序員之間的共同語言有必要學習下,別人講個模式,而你並不懂,尷尬不,溝通成本也變高,固然更爲重要的緣由是,這是前輩們這麼多年摸滾打爬總結總結出來有效經驗總結,重要性天然沒必要多說,在我看來,學習設計模式的必要性就跟1+1=2同樣明顯。java

  筆者就遇到這樣的狀況,從事java開發工做也快兩年了,有時跟同行交流下,直接聊死,由於對於這一塊用到很少,知道有23種模式,但只用過幾種,其餘是一個模糊的概念,故以爲有必要系統的學習瞭解下,由於網上的文章參差不齊,因此筆者選擇了:【書+實際應用的經歷】這種方式來進行學習(後面會介紹到筆者用到的書)。react

  這篇文章做爲【設計模式就該這麼學】系列的第一篇:是用來學習設計模式的預熱,主要是談一下爲何要學習設計模式!程序員

  後續,我會將每一個設計模式單獨成文,這些文章的的代碼和文字將會基於實際的應用例子和書《Head First設計模式》根據本身的理解整理成文寫出來,如有誤差,歡迎指正! 設計模式

  《設計模式就該這麼學》系列文章:  微信

設計模式就該這麼學:爲何要學設計模式?(開篇漫談)post

設計模式就該這麼學:要走心才能遵循設計模式五大原則(第二篇)學習

設計模式就該這麼學:以微信訂閱號來說觀察者模式(第三篇)測試

觀察者模式實際應用:監聽線程,意外退出線程後自動重啓url

1、什麼是設計模式?

  比起百度百科的解釋,我更喜歡《研磨設計模式》一書中的定義,以下

  在軟件開發領域,通過驗證的,用於解決在特定環境下,重複出現的特定問題的解決方案!

  注意上面提到的限定詞,如今按個人理解來解釋下。

  一、軟件開發

    其實我以爲各行各業都有模式能夠套用,這裏的設計模式指的是在軟件開發領域。

  二、通過驗證的

    必須是通過你們公開驗證的解決方案纔算得上是設計模式,而不是說每一個人隨便工做解決的問題方案都算

  三、特定環境

    我的理解爲就是不要脫離特定環境去使用設計模式,拿命令模式來講吧,咱們開發中,請求-響應模式的功能很是常見,通常來講,咱們會把對請求的響應操做封裝到一個方法中,這個封裝的方法      能夠稱之爲命令,但不是命令模式。到底要不要把這種設計上升到模式的高度就要另行考慮了,由於,若是使用命令模式,就要引入調用者、接收者兩個角色,本來放在一處的邏輯分散到了三個類中,設計時,必須考慮這樣的代價是否值得,因此有必要考慮下環境。

  四、重複出現

    由於只有重複出現的問題纔有必要造成固定方案,下次使用直接套用就是。

  五、特定問題

    不要以爲只會一種模式就能夠走遍天下,那還要其餘的模式作什麼卵用,畢竟每種模式是針對特定問題的解決方案。

  每一個設計模式的構成以下:

    一、模式名稱:模式的一個好記的名字

    二、環境和問題:描述在什麼環境下,出現什麼特定的問題

    三、解決方案:描述如何解決問題

    四、效果:描述應用模式後的效果,以及可能帶來的問題

 

2、爲何須要學習設計模式

  一、避免重複造輪子

    前言也提到這是前輩們這麼多年摸滾打爬總結總結出來有效經驗總結,在特定環境下使用確定事半功倍。好比我以前用觀察者模式就很好地解決了實時解析某個指定目錄下文件入庫操做,後面會介紹

  二、溝通更高效   

    農民a:這裏我用了XXX設計模式
    農民b:那我大體瞭解你是怎麼作的了 

    中農c:c,我以爲你這段代碼能夠應用XXX設計模式的

    農民d:以個人理解在這種這個模塊下,不適合用這種模式    

  三、易維護

    由於遵循一個約定(即設計模式)寫了一套代碼,那麼知道這一套約定的人就很容易理解的你的代碼,維護天然更容易。

  四、心法或意識造成    

    爲何一個類似的功能,大牛一下子就搞定,而後清閒地品着下午茶逛淘寶;而本身加班加點搞到晚十點還作不完。
    爲何大牛寫完的程序測試上線後,幾乎完美運行,用戶無懈可擊;而本身的程序bug重重,改好一個卻又引出另外一個,按下葫蘆浮起瓢,幾近崩潰。
    這不只僅是由於大牛們工做比你久,是由於人家腦殼裏就有這樣的意識,在遇到特定的問題,人家很天然就能冒出這樣的想法,一樣的功能人家就是寫出的代碼就死能夠比你的更容易維護,

    系統也就更穩定。而你爲何不能,由於你根本就不知道有設計模式可用。

    

 學習本就是一個不斷模仿、練習、再到最後面本身原創的過程。

雖然可能歷來不能寫出超越網上通類型同主題博文,但爲何仍是要寫?
於本身而言,博文主要是本身總結。假設本身有觀衆,畢竟講是最好的學(見下圖)。

於讀者而言,筆者能在這個過程get到知識點,那就是共贏了。
固然因爲筆者能力有限,或許文中存在描述不正確,歡迎指正、補充!
感謝您的閱讀。若是本文對您有用,那麼請點贊鼓勵。

相關文章
相關標籤/搜索