設計模式篇


一. 什么是設計模式

  糾結了好久,今天終於下定決心開始寫設計模式系列,因為這個系列章節確實不好寫,在這之前,也看了好多關於設計模式的博客、視頻、書籍等,大多數用的例子要么貓啊狗啊、大雁等動物類;要么就是學生類,教師類,試想一下,哪個項目中會用這些動物類教師類呢?

  我也和我同行的朋友交流了一下關於設計模式,對設計模式的理解,可以分為這么幾個層次:

  ①:根本不知道什么是設計模式。

  ②:聽說過幾種設計模式,理解不深。

  ③:能寫出並理解幾種設計模式,但不知道在項目中該怎么用。

  毋庸置疑,能否靈活的運用好設計模式,是一個名開發工程師邁向架構師的必經之路,上面說的這么玄乎,那么到底什么是涉及模式呢?這里先借助金庸的武俠小說來類比一下。

  作為金庸迷的我,金庸老師的“飛雪連天射白鹿,笑書神俠倚碧鴛”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 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM