一. 什么是設計模式
糾結了好久,今天終於下定決心開始寫設計模式系列,因為這個系列章節確實不好寫,在這之前,也看了好多關於設計模式的博客、視頻、書籍等,大多數用的例子要么貓啊狗啊、大雁等動物類;要么就是學生類,教師類,試想一下,哪個項目中會用這些動物類教師類呢?
我也和我同行的朋友交流了一下關於設計模式,對設計模式的理解,可以分為這么幾個層次:
①:根本不知道什么是設計模式。
②:聽說過幾種設計模式,理解不深。
③:能寫出並理解幾種設計模式,但不知道在項目中該怎么用。
毋庸置疑,能否靈活的運用好設計模式,是一個名開發工程師邁向架構師的必經之路,上面說的這么玄乎,那么到底什么是涉及模式呢?這里先借助金庸的武俠小說來類比一下。
作為金庸迷的我,金庸老師的“飛雪連天射白鹿,笑書神俠倚碧鴛”14部小說每一部看了都不低於3遍以上,對里面個各種武功也是了如指掌,像效果比較炫麗,威力比較大的有:“喬幫主降龍十八掌、段譽的六脈神劍、楊過的黯然銷魂掌、任我行的吸星大法等等”,這些都是外家功夫,種類很多,一個人可能會多種,這就好比.Net的中MVC、EF、SignalR等等;當然也有內功心法,典型的有:”少林和尚的易筋經、張無忌的九陽神功”,這兩種功夫本身並沒有太大的殺傷力,但會了這種功夫,更容易融會貫通外家功夫,使外家功夫發揮出更大效果,拿到我們開發領域,“設計模式”就是內功心法,沒有語言之分,它是一種模式,一種思想指導着我們開發。
那么怎么才能算精通設計模式呢?
看過《倚天屠龍記》的朋友可能會記得里面有這么一個場景:趙敏冒充明教挑戰張三豐的時候,張無忌辦成小道童出來救場,在對陣三個家奴的的時候,張三豐教了張無忌一套太極拳法,里面有這么一段對話:
張三豐演示完后,問張無忌:“無忌,你記住了多少”,張無忌回答說:“無忌不才,只有一小部分沒有記住”;過了一會,張三豐又問道:“現在能記住多少”,無忌說:“太師傅,我已經全部忘記了”,這時,張三豐說:“無忌你可以上了”,結果顯然而知,對手被打的那叫一個慘啊。
所以:設計模式的最高境界是,忘記設計模式,將23種的設計模式自然而然的融入開發中,哈哈,當然這個有點難,沒有個五年以上的功力,很難達到這個層次。
二. 設計模式的內容
設計模式是一種套路,是把 “別人成功的例子” 拿過來靈活運用,我們的優秀的前輩總結出來7個設計原則和23種設計模式。
設計原則:
1. 單一職責原則 2. 里氏替換原則 3. 依賴倒置原則
4. 接口隔離原則 5. 迪米特原則(最小知道原則) 6. 開閉原則
7. 組合聚合原則
設計模式:
1. 創建型模式 :工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
2. 結構型模式:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
3. 行為型模式:策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。
解釋:
設計模式只是一個大概的套路,不能生搬硬套,有一些做法可能是多個設計模式的融合,有的也很難歸為某個設計模式。不要為了設計模式而設計模式,沒有十全十美的代碼。
在上述設計模式中,大部分設計模式都用到了上面的設計思想,在設計模式中,我們會經常看到:開閉原則、里氏替換原則(多態)、面向接口編程、面向抽象編程、抽象類、override覆寫這幾種技術。
如果對於抽象類或者override不明白的,有必要先看一下下面的章節:
第一節:從面向對象思想(oo)開發、接口、抽象類以及二者比較
第二節:重寫(new)、覆寫(overwrite)、和重載(overload)
三. 系列章節
下面將由淺入深,結合實際案例來講解設計原則和設計模式。
第二節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第四節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第五節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第六節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第七節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第八節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第九節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十一節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十二節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十三節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十四節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十五節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十六節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十七節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十八節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十九節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十一節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十二節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十三節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十四節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十五節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十六節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十七節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十八節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十九節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十一節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十二節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十三節:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
!
- 作 者 : Yaopengfei(姚鵬飛)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 聲 明1 : 如有錯誤,歡迎討論,請勿謾罵^_^。
- 聲 明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。