前言
設計模式分爲三類,創建型,結構型和行爲型。創建型比較好理解,它抽象了實例化過程,將系統與實例的創建解耦。實例由專門的工廠來創建,從而使系統針對實例的抽象接口編程,不依賴任何具體的實現。結構型和行爲型有點難以理解,GoF的解釋是,結構型模式涉及到如何組合類和對象以獲得更大的結構;行爲模式涉及到算法和對象間職責的分配。行爲模式不僅描述對象或類的模式,還描述它們之間的通信模式。
大部分行爲型和結構型設計模式的特點還是挺明顯的,但是有少部分的界限就沒那麼清晰。比如說代理模式屬於結構型模式,但是它也承擔了職責的分配。它通過一個代理類,直接處理客戶請求,但是把大部分實際職責交給原始的工作類。將設計模式劃分爲三種類型,可以理解爲是劃分出一種層級,幫助模式的使用者記憶和理解。
GoF提到的23種設計模式中有的特點是比較鮮明的,它們有明顯的中間層,並且與其它設計模式不容易混淆,但是有的卻不那麼容易理解其意圖。下面就按照是否容易理解分成兩類來記錄這些設計模式。
那些容易理解,有明顯中間層的設計模式
- 單件模式
- 適配器模式
- 外觀模式
- 享元模式
- 代理模式
- 命令模式
- 迭代器模式
- 策略模式
那些容易混淆,沒有明顯中間層的設計模式
- 工廠方法與抽象工廠
- 裝飾模式
- 組合模式
- 觀察者模式
- 狀態模式
- 生成器模式
- 原型模式
- 橋接模式
- 職責鏈模式
- 解釋器模式
- 中介者模式
- 備忘錄模式
- 模版方法模式
- 訪問者模式
就像優化準則之一是“不要過度優化”,設計模式也是不要在需求不明確的情況下過早和過多地使用設計模式。記住幾個常用的設計模式,在實際項目中思考哪些是經常變動的,哪些可以套用上這些設計模式。
那麼要如何系統化的學習設計模式?這個問題我想一定是困擾着大多數的讀者朋友,網上找的關於設計模式的資料都是零零散散的,沒有期望說這篇文章對你有意義,這要求太高了,我遠沒有這個能力,但是如果能有一套完整的學習視頻、學習文檔讓你看完就把這個設計模式都記住了,那這篇文章的目標就達到了。
這裏整理成了一份文檔,加VX號:MXY1692”獲取小編整理的【23種設計模式與六大原則】】文檔與【整套設計模式學習視頻】
本文檔的立意不僅僅在於介紹基本的設計模式知識,更多的是說明在何種條件下選擇正確的設計模式。因爲在實踐中,濫用或錯用設計模式有時候跟大的是浪費。因此,本文檔在設計模式的介紹過程中穿插了不同類型模式之間的比較,並在第8章第9章給出了大量的Java問題實例,供讀者深入理解。加VX號:MXY1692”獲取小編整理的【23種設計模式與六大原則】】文檔與【整套設計模式學習視
第一章 概述
第二章 UML基礎
第三章 設計模式簡介
第四章 創造型模式
第五章 結構型模式
第六章 行爲型模式
第七章 概念與提示
第八章 設計模式面試問題
面試問答
本書特點
- 涵蓋GoF提出的23種設計模式
- 以簡單直接的方法展示設計模式的核心思想
- 涵蓋設計模式相關的面試問題
- 提供大量實際代碼示例,並且全部代碼由Java編寫,方便調試
- 基於軟件開發人員實踐經歷,減少學習誤區
- 無需軟件設計基礎知識
23種設計模式與六大原則學習思維導圖
整套設計模式學習視頻