單例模式具備典型的3個特點:
私有的構造方法 —— 不可繼承,也不可new出物件
指向自己例項的私有靜態引用
以自己例項為返回值的靜態的公有的方法
單例模式的主要優點就是節約系統資源、提高了系統效率,同時也能夠嚴格控制客戶對它的訪問。也許就是因為系統中只有乙個例項,這樣就導致了單例類的職責過重,違背了「單一職責原則」,同時也沒有抽象類,所以擴充套件起來有一定的困難。
在應用系統開發中,我們常常有以下需求:
因為singleton模式可以保證為乙個類只生成唯一的例項 物件,所以這些情況,singleton模式就派上用場了。
其uml結構圖非常簡單,就只有乙個類,如下圖:
類圖知識點:1.類圖分為三部分,依次是類名、屬性、方法2.以《開頭和以》結尾的為注釋資訊
3.修飾符+代表public,-代表private,#代表protected,什麼都沒有代表包可見。
4.帶下劃線的屬性或方法代表是靜態的。
public class person
// 指向自己例項的私有靜態引用
private static final person person = new person();
private string name;
public string getname()
public void setname(string name)
// 提供乙個全域性的靜態方法
public static person getperson()
}
結果測試:
public class mainclass
}
public class person2
// 指向自己例項的私有靜態引用
private static person2 person;
private string name;
public string getname()
public void setname(string name)
// 提供乙個全域性的靜態方法
public static person2 getperson()
return person;}}
測試:
public class mainclass
}
public class person3
// 指向自己例項的私有靜態引用
private static person3 person;
private string name;
public string getname()
public void setname(string name)
// 提供乙個全域性的靜態方法,使用同步方法
public static synchronized person3 getperson()
return person;}}
測試:
public class mainclass
}
public class person4
// 指向自己例項的私有靜態引用
private static person4 person;
private string name;
public string getname()
public void setname(string name)
// 提供乙個全域性的靜態方法
public static person4 getperson() }}
return person;}}
測試:
public class mainclass
}
建立型模式 單例模式
餓漢式 package com.hfview.designmode.signle 1.餓漢式 就是在初始化成員變數的時候就獲取例項物件 2.public class signlemode private signlemode 懶漢式 package com.hfview.designmode.sig...
建立型模式 單例模式
概述 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。適用性 當類只能有乙個事例而且客戶可以從乙個眾所周知的訪問點訪問它時。當這個唯一事例應該是通過子類化可擴充套件的,並且客戶應該無需更改 就能使用乙個擴充套件的例項時。參與者 singleton 定義乙個instance操作,允許客戶訪問它...
建立型模式 單例模式
1.乙個類只能建立乙個物件 2.應用 主要應用與資料庫應用,可以避免大量的new操作消耗資源 3.uml類圖 user 何曉巨集 date 2018 9 27 time 15 48 namespace singleton class singleton 判斷 instance是否為空,為空則新建乙個...