標籤:
工作了這幾年,技術積累了也不少了,但是平時也沒怎麼將所讀的記下來,一方面覺得存在腦海裡就好了,一方面算是工作問題,可能也是自己偷懶,不過這段時間想想,還是應該把自己這幾年的技術沉澱給轉換為文字,一方面鍛煉一下自己的文字表述能力,一方面看看自己能不能把自己學的以通俗易懂的方式教授給別人,畢竟真正掌握一門技能最好的方式就是教給別人,話不多說,就先從大家都熟悉透的設計模式入手吧,設計模式雖然已經爛大街了,部落格園上也一搜一大把,但是希望自己能講解出不同的風采,盡量以不同的角度來切入設計模式這個領域,話不多說,先來說一下為什麼我們需要設計模式。
設計模式原本是建築學領域的內容,因為建築師在建造房子時,發現建造房子很多時候都大同小異,然後抽象出了一系列的模式,當然,不是說他們提供的模式是最好的,但是套用這種模式卻是最不容易犯錯的,而這套模式也被搬到了軟體工程的設計上面上來,最早起源於《GOF23設計模式》的博士畢業論文,裡面闡述了在軟體工程中,所遇到的一系列問題,和常見得軟體工程的設計情境,他們將這些情境抽象出來,整理成了23種設計模式,當然,設計模式肯定不止這23種,像還有熔斷設計模式、MVC設計模式、只是這23種設計模式較為外人所熟知,我隨手畫了張思維導圖,
大致將設計模式分為了3大類
1、建立型設計模式 2、結構型設計模式 3、行為型設計模式
當然還有指導設計模式的設計原則
1、單一責任原則 2、開閉原則 3、裡氏替換原則 4、依賴倒置原則 5、介面隔離原則 6、最少知識原則
首先來說一下3大類的設計模式,對於建立型設計模式,顧名思義是產生對象的設計模式,這類設計模式主要通過一定的方法產生指定的對象,像抽象工廠、單例、Builder、Prototype,都是為了建立指定對象的模式,具體怎麼建立,後期再表,劇透一下,下一章將講到各種市面上各種單例模式,以及緩衝類型的單例,可控制的多執行個體的“單例”。
對於結構類型的設計模式,主要是該類型的模式,主要是為類提供某種特定的結構或封裝,像適配器模式、橋接模式、裝飾器模式,組合模式等,都是為了提供特定的某種結構所存在的,這裡我想了挺久的,代理模式其實也可以劃分到行為模式上去。
而最後的行為模式主要是該種類的類,都有特定的動作,行為,像我們最常用的命令模式、責任鏈模式、狀態模式、調停者模式,單單從這些模式的名字我們就可以看出,這些類都具有特定的某一些行為
雖然這樣的分類有些粗糙,但是我們可以管中窺豹,大致可以看出他們最初的一些設計初衷以及大致在我們工程上遇到的時候,選型上、設計模式的取捨上可以更好的把握。
設計模式總綱