單例模式,學習筆記

2022-08-13 12:42:13 字數 1641 閱讀 2692

一、單例模式實現三要素:

●只能有乙個例項。

◆構造器私有化

●自行建立這個例項

◆含有乙個該類的靜態變數來儲存這個唯一的例項

●必須自行向整個系統提供這個例項;

◆對外提供獲取該例項物件的方式:

(1)直接暴露

(2)用靜態變數的get方法獲取

二、單例模式分類

根據物件建立的時機不同,單例模式可以分為兩類。一種是在類初始化的時候直接建立物件,稱為餓漢式;另一種是在呼叫類靜態方法時才建立物件,稱為懶漢式。

三、餓漢式

餓漢式是執行緒安全的。

1.直接例項化餓漢式

public

class

singleton

}

2.列舉類餓漢式

public

enum

singleton

3.靜態**塊方式

public

class

singleton

private

singleton(){}

}

這種方式適合於需要通重載入外部檔案,來例項化單例物件屬性的時候。

例如:

public

class

singleton1

catch

(ioexception e)

}private

singleton1(){}

public

string getname()

}

view code

四、懶漢式

方式一:

public

class

singleton

public

static

singleton getinstance()

return

instance;}}

注:此方式有執行緒安全問題,只適用於單執行緒環境。

方式二:同步**塊

public

class

singleton

public

static

singleton getinstance()

}return

instance;}}

方式三:

public

class

singleton

public

static

singleton getinstance()}}

return

instance;}}

效率比前一種高,推薦使用

public

class

singleton

private

static

class

inner

public

static

singleton getinstance()

}

注:在內部類被載入和初始化時,才建立工 nstance例項物件。

靜態內部類不會自動隨著外部類的載入和初始化而初始化,它是要單獨去載入和初始化的。因為是在內部類載入和初始化時,建立的,因此是執行緒安全的。

單例模式學習筆記

單例 優點1.減少記憶體開支 2.減少效能開銷 3.寫檔案時避免資源多重占用 4.優化共享資源訪問 缺點1.自行例項化的特點導致無法擴充套件,只能修改原始碼 2.對測試不利,只有全部完成單例 才能測試 3.與單一職責原則有衝突 適用1.生成唯一序列號的環境 2.整個專案需要乙個共享訪問點 3.建立物...

單例模式學習筆記

public class student 自己造乙個 靜態方法只能訪問靜態成員變數,加靜態 為了不讓外界直接訪問修改這個值,加private private static student s new student 提供公共的訪問方式 為了保證外界能夠直接使用該方法,加靜態 public stati...

單例模式學習筆記

靜態內部類單例 反射破壞單例 序列化破壞單例 註冊式單例 threadlocal 執行緒單例 單例模式 singleton pattern 是指確保乙個類在任何情況下都絕對只有乙個例項 public class hungrysingleton public static hungrysingleto...