設計模式分為三類型別,共23種
建立型模式:單例模式、抽象工廠模式、原型模式、建造者模式、工廠模式。
結構型模式:介面卡模式、橋接模式、裝飾模式、組合模式、外觀模式、享元模式、**模式。
行為型模式:模板方法模式、命令模式、訪問者模式、迭代器模式、觀察者模式、中介模式、備忘錄模式、直譯器模式、狀態模式、策略模式、職責鏈模式。
單例模式是指在記憶體中只會建立且僅建立一次物件的設計模式。在程式中多次使用同乙個物件且作用相同時,為了防止頻繁地建立物件使得記憶體飆公升,單例模式可以讓程式僅在記憶體中建立乙個物件,讓所有需要呼叫的地方都共享這一單例物件。
餓漢式(靜態常量)
餓漢式(靜態**塊)
懶漢式(執行緒不安全)
懶漢式(執行緒安全,同步方法)
懶漢式(執行緒安全,雙重檢查)
靜態內部類
列舉步驟如下:
構造器私有化(防止new)
類的內部建立物件
向外暴露乙個靜態的公共方法(getinstance)
**如下:
public
class
singleton
private
final
static singleton instance =
newsingleton()
;public
static singleton getinstance()
}
總結:這種方式寫法簡單,容易理解,避免了執行緒同步的問題。但是,如果從始至終都沒用過這個類,它也會載入到記憶體中,可能回造成記憶體浪費。
**如下:
public
class
singleton
private
static singleton instance;
static
public
static singleton getinstance()
}
總結:其優缺點和上面一樣
懶漢式就是懶,需要用到的時候才去建立物件。
public
class
singleton
private
static singleton instance;
//呼叫方法時才建立物件
public
static singleton getinstance()
return instance;
}}
總結:起到了懶載入的效果,一定程度上避免了記憶體的浪費。但是,第一次呼叫getinstance()方法時,如果是多個執行緒同時呼叫的話,由於沒有鎖機制,多個執行緒會同時進入方法內部,這時就會產生多個物件,只能在單執行緒下使用,在實際開發中不建議使用。
public
class
singleton
private
static singleton instance;
//呼叫方法時才建立物件
public
static
synchronized singleton getinstance()
return instance;
}}
總結:這種寫法解決了上面的執行緒安全問題。但是,它依然不是被推薦使用的。因為多執行緒使用的話,每次呼叫getinstance()都會對方法進行加鎖,其它執行緒只能等鎖釋放了才能訪問,會帶來效能問題,實際開發中不推薦使用。
public
class
singleton
public
static singleton getinstance()
}}return singleton;
}}
public
class
singleton
public
static
class
singletoninstance
public
static
synchronized singleton getinstance()
}
public
enum singleton
總結:**少,避免執行緒安全問題,而且可以防止反序列。餓漢式和懶漢式都無法避免反序列化,因為反射可以呼叫類的私有方法,那麼也就可以呼叫私有建構函式,能呼叫就可以例項化多個,列舉的方式可以防止這種情況,推薦使用。 1 設計模式學習之單例設計模式
一 什麼是單例設計模式?二 為什麼要使用單例設計模式?三 如何實現單例設計模式?缺點 2 懶漢式 public class mgr02 public static mgr02 getinstance return instance 缺點 3 synchronized修飾方法的寫法。解決懶漢式的執行緒...
設計模式1之Singleton單例模式
懶漢式 public class singleton public static synchronized singleton getinstance return uniqueinstance 懶漢式 volatile public class singleton public static si...
java設計模式之單例模式(1)
單例模式 屬於建立型模式。專案中只存在某個類的乙個物件,而且只可能存在乙個物件。那麼我們說這個類是單例模式,也叫單態模式。單例模式分為兩種 懶漢式 和 餓漢式。package com.pattern.build.singleton 餓漢式 author chuer date 2014 7 17 下午...