Java-單例模式
阿新 • • 發佈:2018-03-18
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-單例模式