先說個故事吧。設計模式
當《獨立宣言》還在起草時,本傑明*富蘭克林坐在托馬斯*傑弗遜的身邊,把傑佛遜關於「咱們認爲這些真理是神聖的,毋庸置疑」 的措辭修改成如今很是著名的句子「咱們認爲這些真理是不言而喻的」。根據傳記組評價 Walter Isaacson 的說法,傑佛遜對富蘭克林的改動暴怒不已。富蘭克林意識到朋友的情緒很激動,因此給他講述了另外一位朋友約翰*湯普森(John Thompson)的故事。架構
禦寒*湯普森剛剛開始從事制帽業,想爲本身的公司設計一個標記。他設計出以下圖所示:ide
John Thompson,帽商,製做和銷售帽子,現金支付 設計
在啓用新標記前,約翰決定給幾個朋友看看,聽聽他們的意見。第一個朋友以爲「帽商」這個詞有些重複,沒有必要,由於後面的話「製做....帽子」,已經說明了約翰是一個帽商。因而「帽商」這個詞被刪除了。第二個朋友認爲,「製做」一詞能夠不要,由於顧客不會關心究竟是誰製做了帽子。因而「製做」一詞也被刪去。第三個朋友說,他認爲「現金支付」毫無用處,由於不會有顧客賒帳買帽子,通常人們都用現金買。因此這些詞也被刪去。blog
如今標記變成了:「John Thompson 銷售帽子」get
「銷售帽子!」他的另外一個朋友說,「哎呀,沒人認爲你會給他發帽子的。這個詞有什麼用處呢?」 因而「銷售」被刪去了。這是「帽子」這個詞顯然也沒什麼用處了,由於標記裏已經有了帽子的圖形。因此最終被簡化成:it
John Thompson入門
在Simple and Direct 一書中, Jacques Barzun 闡釋到,全部優秀的著述,都是不斷修改而成的。class
到如今,你可能以爲跟設計模式有點關係,又沒有太明顯的關係,呵呵。我來提個問題:你爲何要用設計模式?重構
或者我換個問法:你怎麼理解設計模式?你什麼時候用,怎麼用設計設計模式?在這個故事裏,其實更多講的是重構,某種意義上講,他成爲了應用設計模式的一種驅動,也就是說,咱們不容易一次把事情作好,而在重構的過程當中,利用 設計模式 來讓你的系統更加的 好!
設計模式必定要在重構中使用嗎?固然不是,只是咱們軟件環境下,大多數狀況,他們伴隨而行。
問:設計模式究竟是什麼?
1. 設計模式更像是一種小型的架構,他遵循某些原則,讓咱們的代碼更加的優雅。
2. 他就像一個術語,如我說策略模式,你就知道,我爲作了哪些事情。若是不懂策略模式,我就要解釋,我把一些可變行爲進行了經行剝離,你能夠輸入你本身定義類來改變個人行爲,並且這樣可能還不夠....
問:什麼時候用設計模式?
1. 任何合理的地方
問:怎麼用設計模式?
理解設計模式,在你的重構過程當中讓你的系統更加符合大家的指望,如解耦,重用等。固然,熟練時能夠考慮在設計系統時就提早加入設計模式。甚至,不要拘泥於設計模式,你能夠根據實際狀況稍微改動,趨向設計模式。
如今設計模式有大量的參考文章,甚至具體事例,爲了避免重複發明輪子,我也試圖找一些能夠轉載的文章,來讓你們更加的理解設計模式。一樣,我更推薦你們多讀書, 本文章將主要參考如下書籍:《HeadFirst設計模式》,《重構與模式》,《短碼之美》,《Java與模式》。
--同時建議:入門者看《HeadFirst》系列, 提高能夠看看《短碼之美》,《重構與模式》等。