2.2 根據模式的作用劃分
3.總結
博主經過6年的**洗禮,慢慢意識到**中使用設計模式的重要性。然而,在我遇到的程式設計師大軍中,我大概歸類了以下幾類人:
因此,博主計畫做乙個設計模式的系列帖子,記錄學習筆記,力求深入淺出設計模式。
目前有23種設計模式。設計模式有兩種分類方法,一種是根據模式的目的來劃分,另一種根據模式的作用範圍來劃分。
根據模式是用來完成什麼樣的工作,可以劃分為:
2.1.1 建立型模式
建立型模式用來描述「怎麼建立物件,物件從**獲取」。主要是為了將物件的建立與使用分離。包括5大模式:
請記住:著重於物件如何建立,從**建立
2.1.2 結構型模式
結構型模式用來描述「處理類和物件的組合,將類和物件按照某種布局完成更大的結構」。包括7大模式:
請記住:著重於物件與物件之間的一種關係、布局、結構
2.1.3 行為型模式
行為型模式用於描述「類或物件之間怎樣相互協作共同完成單個物件無法單獨完成的任務,以及怎樣分配職責」。包括11種:
請記住:著重於物件為了完成某個行為而協作的過程,重點在於行為
根據模式用於類上還是物件上來分,這種方式可分為:
2.2.1 類模式
用於處理類與子類之間的關係,這些關係通過繼承來建立,是靜態的,在編譯時便確定下來了。
2.2.2 物件模式
使用者處理物件之間關係的,這些關係可以通過組合或聚合來實現,在執行時刻是可以變化的,更具動態性。除了上面四個模式之外,其他模式都是屬於物件模式(介面卡模式比較特別)。
綜合總結為下圖:
當然,請記住,不要為了使用設計模式而去使用模式(這種叫做過度設計)。
在做小專案的時候,可以不考慮設計模式,因為有時候引入設計模式可能會額外新增更多的**,不要讓**為設計模式服務,這是本末倒置的。
在做大專案(多人協作專案,逐步迭代的專案)的時候,博主極度建議適度考慮設計模式,因為涉及到後期的產品迭代開發,往往有意向不到的需求變更。當乙個**隨著需求的變更而不用修改太多舊邏輯**的時候,我覺得這就是乙個成功的**。
最後,博主總結幾點自己的經驗:
下面附上腦圖:
深入淺出設計模式 模板模式
設計模式是程式設計師必須掌握的技能,熟練應用各種設計模式,不僅可以提公升我們的編碼能力,也可以使得我們的編碼更美觀。在這裡我們來講解一下模板模式。模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式...
深入淺出設計模式 工廠模式
披薩店新推出了點單系統,披薩需要通過不同的製作,相同的烘焙,裁剪等工序才能完成。披薩的種類實在太多了,在構造披薩例項時,光是if else 語句就長的可怕,修改與維護更令人頭疼。披薩子類繼承實現相同的基類,通過基類呼叫不同的子類,使得 具有一定的彈性,將構造子類放入業務 導致了子類與業務 的耦合,令...
深入淺出設計模式(二) 工廠模式
簡單工廠模式 factory pattern 又稱為靜態工廠方法 static factory method 它屬於建立型模式。在簡單工廠模式中,可以根據引數的不同返回不同類的例項。簡單工廠模式專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。比如有乙個電腦商,目前生產聯想電腦...