設計模式:是一套被反覆使用、多數人知曉的、通過分類編目的、代碼設計經驗的總結。使用設計模式是爲了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。設計模式
整體來講設計模式分爲23種三大類:spa
建立型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。設計
結構型模式,共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。代理
行爲型模式,共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、解釋器模式。code
單例模式:類在內存中只有一個對象實例。對象
單例模式有兩種實現方式:blog
餓漢式:類加載時建立對象內存
懶漢式:當須要實例對象時才建立對象(延遲加載)get
代碼:原型
1 public class Single { 2 /*單例模式:類在內存中只有一個對象實例。有兩種方式實現 3 *實現細節: 4 * 1.不讓建立對象由咱們來建立對象(私有化構造:不可建立對象。私有化實例:不可訪問此對象。) 5 * 2.定義一個方法用來獲取實例對象。 6 * 4.靜態變量會在類加載時執行因此堆內存中存在Single()對象。 7 * 5.程序會先從棧中找若是沒有去堆中尋找對象。 8 * 6.堆內存中有此對象因此會返回此對象。 9 * 7.第二次調用時同理會返回此對象因此指向的是同一個對象 10 */ 11 //單例模式餓漢式:類加載時就建立實例對象 12 private static Single s = new Single(); 13 public static Single getSingle(){ 14 return s; 15 } 16 //私有化構造不讓建立對象 17 private Single(){} 18 19 /*單例模式:類在內存中只有一個對象實例。 20 *實現細節: 21 * 1.不讓別建立對象由咱們來建立對象(私有化構造:不可建立對象。私有化實例:不可訪問此對象。) 22 * 2.定義一個方法用來獲取實例對象。 23 * 4.靜態變量會在類加載時執行此處爲空沒由建立實例對象 24 * 5.程序會先從棧中找若是沒有去堆中尋找對象。 25 * 6.堆內存中沒有此對象因此會先建立實例對象而後返回 26 * 7.當第二次調用時由於堆內存中有了此對象因此會直接返回因此都是指向同一個實例對象。 27 */ 28 //單例模式懶漢式:類加載時不建立對象,用到實例時才加載。 29 private static Single s = null; 30 public static Single getSingle(){ 31 if(s==null){ 32 s = new Single(); 33 } 34 return s; 35 } 36 }