設計模式入門

2021-07-11 01:19:03 字數 1429 閱讀 1381

最近一直在學習設計模式,打算把我所學習的東西在部落格裡面記錄下來。我學習設計模式所用的書是o』relly出品的《head first設計模式》,這個系列還是十分出名的。其實很多開發者從始至終並未系統的學習過設計模式,而是從一次次的程式設計中和前人的教誨中領悟得來。但是其中走過的彎路,吃過的苦頭,只有他們自己才知道。通過學習設計模式,我們才可以在開發時站在巨人的肩膀上!

1、什麼是設計模式

最近nba看的比較多,就用籃球打個比方吧。在籃球場上,不要只去關注啦啦隊(但是要看啦啦隊記得買坐在前面的票,嘿嘿嘿),咳,我們要注意的是戰術。籃球中的戰術就好比是程式中的設計模式,乙個球隊圍繞著戰術去打球,就好像依照著某種設計模式去程式設計,會有更好的效率、章法和觀賞性。nba中,我個人比較喜歡馬刺隊,因為馬刺隊雖然老驥滿營(除了小萊),但卻依靠著超強的戰術執行力,總能戰勝陣容強勁的對手。而設計模式和戰術一樣,都是逐漸被發明、改進、沿襲下來的。

在當年還沒有三分線的時候,球員都扎堆在內線,防守也收縮於籃下,因為你隔著再遠投籃也就是兩分。這讓進攻和防守的套路捉襟見肘,也讓身高成為籃球的絕對優勢(現在想想都好痛苦啊。。。。身高不足壓力山大)。而在出現了三分線以後,隨著時間的推移進攻和防守的戰術慢慢豐富了起來,籃球也不再僅僅是大個子的天下。進攻上跑轟,三角進攻,普林斯頓體系,突破分球等等逐漸被人認可,而防守上二三聯防,包夾,協防,繞前等也效果尚佳。舉個近一些的例子,如日中天的大鯊魚奧尼爾在內線橫行霸道的時候,時任小牛隊教練的老尼爾森採用了砍鯊戰術(hack-a-shaq,奧胖子是真的罰不進去。。),獲得了不錯的效果,其他球隊紛紛效仿,時至今日仍有砍霍戰術和砍小喬丹戰術。設計模式也是如此發展而來並廣為應用的。

2、設計模式的好處

而另一方面,設計模式可以讓你和其他開發人員有共享的詞彙,讓交流溝通高效無阻礙。可以把思考架構的層次提高到模式層面,而不是僅僅停留在瑣碎的物件和零零散散的方法語句上。再打乙個比方,比如點菜(除了運動和玩就是吃,我這比方打得也是沒誰了)。小明和小剛去飯店吃飯,小明點菜時說要那個炸過的土豆加辣椒茄子炒的菜,再來乙個粉條和肉末一炒,服務員聽的一頭霧水,而旁邊的小剛則說來乙份地三鮮和螞蟻上樹(再來一盆公尺飯,我就夠了。)。其實兩者形容的都是同樣的菜,但是小明就好像是沒有學過設計模式的程式設計師,在**上不規範,而小剛有很好的設計模式素養,在與別人交流溝通的時候就易如反掌。

3、如何應用設計模式

當你學會設計模式後,還遠遠不夠,學會和學以致用完全是兩個不同層面的意思(我想上過高中被文綜理綜折磨過得的人基本都清楚)。而且很多時候,我們將面臨的是多種設計模式融合的複雜情況。因此,要想站在巨人的肩膀上是要付出代價的。就好比要想能夠在籃球比賽中順暢的執行戰術,需要隊員們一次次的磨合、訓練。設計模式亦是如此,前人設計經驗的總結,我們也需要花費時間去慢慢的剖析,咀嚼,體會箇中滋味。每個設計模式都是無數行**的精華,要學好這些精華,我們需要做的也是同樣的工作。後面的學習中,我會貼出**,希望讀者可以不吝嗇自己的時間去自己敲打一番,更直觀的學習設計模式。

2016.4.7 10:55

by mr.losers

設計模式入門

一 設計模式的分類 設計模式在大體上可以分為三類 1.建立型模式 通常和物件的建立有關,涉及到物件例項化的方式。2.結構型模式 描述的是如何組合類和物件來獲取更大的結構。3.行為型模式 用來對類或物件怎樣互動和怎樣分配職責進行描述。二 建立型模式主要包含五種設計模式 1.工廠方法模式 2.抽象工廠模...

設計模式入門

策略模式 strategy 不同鴨子型別的飛行行為 鳴叫行為,會有不同的實現,可獨立出來,和其他區分 區分變化的和不會變化的部分。鴨子子類使用介面表示行為,所以具體的實現不會綁死在鴨子的子類中,且可以在執行時改變行為。有乙個 比 是乙個 更好,鴨子的具體行為可以委託給具體的行為類去處理,使用組合建立...

設計模式入門 模板模式

1.什麼是模板模式?模板模式又叫模板方法模式,在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情冴下,重新定義演算法中的某些步驟。2.模板方法的類結構?圖模板方法模式包含抽象類和具體實現類兩個角色 1 abstractclass 抽象類 在抽象類中...