單例模式(Singleton Pattern)涉及到一個(gè)單一的類歹苦,該類負(fù)責(zé)創(chuàng)建屬于自己的對(duì)象咨堤,并且確保只有一個(gè)對(duì)象被創(chuàng)建埂伦,這種類提供了一種訪問(wèn)其唯一對(duì)象的方式,可以直接訪問(wèn)泛领,無(wú)需實(shí)例化荒吏。
介紹
現(xiàn)在的操作系統(tǒng)都為多進(jìn)程多線程的,如windows系統(tǒng)师逸,在多個(gè)線程操作文件時(shí)就必須確保所有的文件操作都對(duì)應(yīng)唯一的實(shí)例來(lái)進(jìn)行司倚;一些設(shè)備管理器經(jīng)常被設(shè)計(jì)為單例,如多臺(tái)打印機(jī)同時(shí)工作篓像,需滿足不能打印同一個(gè)文件动知。
Singleton Pattern主要解決一個(gè)全局變量頻繁的被創(chuàng)建和銷毀。
使用場(chǎng)景
- web計(jì)數(shù)器员辩,每次加數(shù)不用保存到數(shù)據(jù)庫(kù)盒粮,可以先用單例緩存起來(lái)
- 創(chuàng)建的一個(gè)對(duì)象需要消耗的資源過(guò)多,比如I/O奠滑,數(shù)據(jù)庫(kù)連接等
步驟一:創(chuàng)建一個(gè)Singleton類 SingletonObject.java
public class SingletonObject{
private static SingletonObject instance=new SingletonObject();
//私有化構(gòu)造函數(shù)丹皱,防止該類被實(shí)例化
private SingletonObject(){}
public SingletonObject getInstance(){
return instance;
}
public void show() {
System.out.println("this is single object");
}
步驟二:從SingletonObject類獲取唯一的實(shí)例
public class SingletonPatternDemo{
public static void main(String[] args) {
//不合法的構(gòu)造函數(shù)
// SingleObject instance1 = new SingleObject();
//獲取唯一可用的實(shí)例對(duì)象
SingleObject instance = SingleObject.getInstance();
instance.show();
}