1. 程式人生 > >Java-單例模式

Java-單例模式

ati 對象實例 get 方式 懶漢 pre sta log style

一、  單例模式:一種常用的軟件設計模式。通過單例模式可以保證系統中,應用該模式的類一個類只有一個實例。即一個類只有一個對象實例

二、  應用:線程池、緩存、日誌對象、對話框、打印機、顯卡的驅動程序對象常被設計成單例

三、  單例模式特點:
      1、單例類只能有一個實例。
      2、單例類必須自己創建自己的唯一實例。
      3、單例類必須給所有其他對象提供這一實例。

四、單利模式的創建  

技術分享圖片
public class Singletn {
    private String name;
    private String id;
    //創建唯一實例
    private
static Singletn singletn = new Singletn(); //對外提供實例 public static Singletn getInstant() { return singletn; } //構造器私有化 private Singletn() { } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id; }
public String getName() { return name; } public String getId() { return id; } }
餓漢式單例模式 技術分享圖片
public class Singletn {
    private String name;
    private String id;
    //創建唯一實例
    private static Singletn singletn;
    //對外提供實例
    public static Singletn getInstant() {
        
if (singletn == null){//雙重檢查 synchronized (Singletn.class){//多線程時,線程安全問題,加鎖實現線程同步 singletn= new Singletn(); } } return singletn; } //構造器私有化 private Singletn() { } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id; } public String getName() { return name; } public String getId() { return id; } }
懶漢式單例模式

  餓漢式與懶漢式區別:

    1.餓漢式即靜態初始化的方式,它是類一加載就實例化的對象,所以要提前占用系統資源

    2.懶漢式類似於延遲加載,在使用的時候實例化,多線程中會有線程安全問題,需要雙重檢查

  推薦使用餓漢式。

Java-單例模式