標準的設計模式總共有23種,這些模式能夠分爲三大類,建立型、結構型和行爲型
,除了這23種外,還有其餘如J2EE的設計模式(MVC等),這裏只學習23中的常見的幾種,結合Head First 設計模式
和Java的一些框架源碼進行深刻學習,並經過ProcessOn畫出UML圖。html
工廠模式
單例模式
適配器模式
外觀模式
裝飾器模式
代理模式
觀察者模式
命令模式
狀態模式
迭代器模式
模板模式
策略模式
六大原則:編程
開閉原則
:對擴展開放,對修改關閉。里氏替換原則
:任何基類能夠出現的地方,子類必定能夠出現。此原則保證子類能夠替換基類而不影響原有功能,同時能夠在基類的基礎上增添行爲。依賴倒轉原則
:針對接口編程,依賴於抽象而不依賴於具體。接口隔離原則
:相對於單一的接口,使用多個隔離的接口會更好,強調下降依賴、下降耦合。迪米特法則(最少知道原則)
:一個實體應儘可能少的與其餘實體模塊發生相互做用,使得系統功能模塊相互獨立。單一原則
:一個類只負責一項職責,防止一個類負責多項職責,當其中有項須要修改的時候,影響到其餘職責的運行。單一職責原則告訴咱們實現類要職責單一;里氏替換原則告訴咱們不要破壞繼承體系;依賴倒置原則告訴咱們要面向接口編程;接口隔離原則告訴咱們在設計接口的時候要精簡單一;迪米特法則告訴咱們要下降耦合。而開閉原則是總綱,他告訴咱們要對擴展開放,對修改關閉。設計模式
Head First的大白話設計原則:架構
對六原則的遵照不是是和否的問題,而是多和少的問題,也就是說,咱們不會說有沒有遵照,而是遵照程度的多少。任何事情都是過猶不及,設計模式的六原則也同樣,制定六原則不是爲了讓咱們刻板的遵照他們,而須要根據實際狀況去靈活運用
。對他們的遵照程度只要在合理範圍內,就算良好的設計了,如下用圖來描述下:框架
圖中的每一條維度各表明一項原則,咱們依據對這項原則的遵照程度在維度上畫一個點,則若是對這項原則遵照的合理的話,這個點應該落在紅色的同心圓內部;若是遵照的差,點將會在小圓內部;若是過分遵照,點將會落在大圓外部。一個良好的設計體如今圖中,應該是六個頂點都在同心圓中的六邊形
。學習
在上圖中,設計一、設計2屬於良好的設計,他們對六項原則的遵照程度都在合理的範圍內;設計三、設計4設計雖然有些不足,但也基本能夠接受;設計5則嚴重不足,對各項原則都沒有很好的遵照;而設計6則遵照過渡了,設計5和設計6都是迫切須要重構的設計。設計
設計模式是很重要的一門技術,若是要提高本身的競爭力,往架構師方向走的話設計模式是必不可少的。目前的Java體系中大量運用了設計模式,如IO的裝飾器模式、Spring IOC的工廠模式,單例模式、Spring MVC的適配器模式、Spring AOP的代理模式,適配器模式等等,學習設計模式能夠幫助本身理解源碼,相對的,學習設計模式時能夠結合現有的Java體系中的設計模式,閱讀其源碼,結合實際應用學習,能夠達到很好的學習效果。代理
參考:code