getinstance方法詳解 單例模式案例詳解

2021-10-17 09:35:50 字數 3780 閱讀 6012

helloworld

當機會變得稀有,當競爭變得激烈

當方向不再清晰,當風口不再有風

全文約5545字,細讀大約需要14分鐘

認識單例模式

什麼是單例模式

單例設計模式,就是採取一定的方法保證在整個的軟體系統中,對某個類只能存在乙個物件例項,並且該類只提供乙個取得其物件例項的方法(靜態方法)。

比如hibernate的sessionfactory,它充當資料儲存源的**,並負責建立session物件。sessionfactory並不是輕量級的,一般情況下,乙個專案通常只需要乙個sessionfactory就夠了,這時就會使用到單例模式。

單例模式的八種方式

單例模式有八種方式:

1. 餓漢式(靜態常量);

2. 餓漢式(靜態**塊);

3. 懶漢式(執行緒不安全);

4. 懶漢式(執行緒安全,同步方法);

5. 懶漢式(執行緒安全,同步**塊);

6. 雙重檢查;

7. 靜態內部類;

8. 列舉

八種方式詳解

餓漢式(靜態常量)

**演示:

1public class singletontest1 

11}12

13//餓漢式(靜態常量)

1415class singleton 

2021    //2、本類內部建立物件例項

22    private final static singleton instance = new singleton();

2324    //3、提供乙個公有的靜態方法,返回例項物件

25    public static singleton getinstance() 

29}

優缺點說明:

餓漢式(靜態**塊)

**演示:

1public class singletontest2 

11}12

13//餓漢式(靜態**塊)

14class singleton 

1920    //2、靜態**塊

21    private static singleton instance;

22    static 

2627    //3、提供乙個公有的靜態方法,返回例項物件

28    public static singleton getinstance() 

33}

優缺點說明:

懶漢式(執行緒不安全)

**演示:

1public class singletontest3 

12}13

14//懶漢式(執行緒不安全)

15class singleton 

2122    //提供乙個靜態的公有方法,當使用到該方法時,才去建立instance

23    public static singleton getinstance() 

29        return instance;

30    }

31}

優缺點說明:

懶漢式(執行緒安全,同步方法)

**演示:

1public class singletontest4 

1213}

1415//懶漢式(執行緒安全,同步方法)

16class singleton 

2223    //提供乙個靜態的公有方法,加入同步處理的**,解決執行緒安全問題

24    public static synchronized singleton getinstance() 

30        return instance;

31    }

32}

優缺點說明:

懶漢式(執行緒安全,同步**塊)

**演示:

1public class singletontest5 

11}12

13//懶漢式(執行緒安全,同步**塊)

14class singleton 

2021    public static singleton getinstance() 

29        }

30        return instance;

31    }

32}

說明:

雙重檢查

**演示:

1public class singletontest6 

11}12

13//雙重檢查

14class singleton 

2021    //提供乙個靜態的公有方法,加入雙重檢查**,解決執行緒安全問題,同時解決懶載入問題

22    public static synchronized singleton getinstance() 

32            }

33        }

34        return instance;

35    }

36}

優缺點說明:

靜態內部類

**演示:

1public class singletontest7 

11}12

13//靜態內部類

14class singleton 

1819    //寫乙個靜態內部類,該類中有乙個靜態屬性singleton

20    private static class singleinstance 

2526    //提供乙個靜態的公有方法,直接返回物件

27    public static synchronized singleton getinstance() 

31}

優缺點說明:

列舉

**演示:

1public class singletontest8 

13}14

15//使用列舉,可以實現單例

16enum singleton 

24}

優缺點說明:

單例模式注意事項和細節說明

單例模式保證了系統記憶體中該類只存在乙個物件,節省了系統資源,對於一些需要頻繁建立銷毀的物件,使用單例模式可以提高系統效能。

-end-

在電腦飛速發展的時代丨我們不應該感到恐懼

因為我們可以跟電腦合作

成為乙個人馬合

一、人槍合

一、人電腦合一的新物種

這樣的人才是這個時代的超級個體

使用getInstance 方法的原因及作用

先舉例說明 下面是乙個例子,為什麼要把這個類例項化?有什麼好處?例項化 public static dbconnect instance public static dbconnect getinstance return instance 總的來說 這是單例模式,一般用於比較大,複雜的物件,只初始...

使用getInstance 方法的原因及作用

先舉例說明 下面是乙個例子,為什麼要把這個類例項化?有什麼好處?例項化 public static dbconnect instance public static dbconnect getinstance return instance 總的來說 這是單例模式,一般用於比較大,複雜的物件,只初始...

使用getInstance 方法的原因及作用

使用getinstance 方法的原因及作用 先舉例說明 下面是乙個例子,為什麼要把這個類例項化?有什麼好處?例項化 public static dbconnect instance public static dbconnect getinstance if instance null insta...