工做了這幾年,技術積累了也很多了,可是平時也沒怎麼將所讀的記下來,一方面以爲存在腦海裏就行了,一方面算是工做問題,可能也是本身偷懶,不過這段時間想一想,仍是應該把本身這幾年的技術沉澱給轉換爲文字,一方面鍛鍊一下本身的文字表述能力,一方面看看本身能不能把本身學的以通俗易懂的方式教授給別人,畢竟真正掌握一門技能最好的方式就是教給別人,話很少說,就先從你們都熟悉透的設計模式入手吧,設計模式雖然已經爛大街了,博客園上也一搜一大把,可是但願本身能講解出不一樣的風采,儘可能以不一樣的角度來切入設計模式這個領域,話很少說,先來講一下爲何咱們須要設計模式。設計模式
設計模式本來是建築學領域的內容,由於建築師在建造房子時,發現建造房子不少時候都大同小異,而後抽象出了一系列的模式,固然,不是說他們提供的模式是最好的,可是套用這種模式倒是最不容易犯錯的,而這套模式也被搬到了軟件工程的設計上面上來,最先起源於《GOF23設計模式》的博士畢業論文,裏面闡述了在軟件工程中,所遇到的一系列問題,和常見得軟件工程的設計場景,他們將這些場景抽象出來,整理成了23種設計模式,固然,設計模式確定不止這23種,像還有熔斷設計模式、MVC設計模式、只是這23種設計模式較爲外人所熟知,我隨手畫了張思惟導圖,緩存
大體將設計模式分爲了3大類ui
一、建立型設計模式 二、結構型設計模式 三、行爲型設計模式設計
固然還有指導設計模式的設計原則代理
一、單一責任原則 二、開閉原則 三、里氏替換原則 四、依賴倒置原則 五、接口隔離原則 六、最少知識原則對象
首先來講一下3大類的設計模式,對於建立型設計模式,顧名思義是產生對象的設計模式,這類設計模式主要經過必定的方法產生指定的對象,像抽象工廠、單例、Builder、Prototype,都是爲了建立指定對象的模式,具體怎麼建立,後期再表,劇透一下,下一章將講到各類市面上各類單例模式,以及緩存類型的單例,可控制的多實例的「單例」。blog
對於結構類型的設計模式,主要是該類型的模式,主要是爲類提供某種特定的結構或封裝,像適配器模式、橋接模式、裝飾器模式,組合模式等,都是爲了提供特定的某種結構所存在的,這裏我想了挺久的,代理模式其實也能夠劃分到行爲模式上去。接口
而最後的行爲模式主要是該種類的類,都有特定的動做,行爲,像咱們最經常使用的命令模式、責任鏈模式、狀態模式、調停者模式,單單從這些模式的名字咱們就能夠看出,這些類都具備特定的某一些行爲博客
雖然這樣的分類有些粗糙,可是咱們能夠管中窺豹,大體能夠看出他們最初的一些設計初衷以及大體在咱們工程上遇到的時候,選型上、設計模式的取捨上能夠更好的把握。思維導圖