程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java單例形式應用及留意事項

java單例形式應用及留意事項

編輯:關於JAVA

java單例形式應用及留意事項。本站提示廣大學習愛好者:(java單例形式應用及留意事項)文章只能為提供參考,不一定能成為您想要的結果。以下是java單例形式應用及留意事項正文


1. 解釋

1)單例形式:確保一個類只要一個實例,自行實例化並向體系供給這個實例

2)單例形式分類:餓單例形式(類加載時實例化一個對象給本身的援用),懶單例形式(挪用獲得實例的辦法如getInstance時才會實例化對象)(java中餓單例形式機能優於懶單例形式,c++中普通應用懶單例形式)

3)單例形式要素:

a)公有結構辦法
b)公有靜態援用指向本身實例
c)以本身實例為前往值的私有靜態辦法

 2.實例

餓單例形式:


package com.wish.modedesign;

public class HungrySingleton {
    private static HungrySingleton instance  = new HungrySingleton();
    private HungrySingleton(){
    }
    public static HungrySingleton getInstance(){
        return instance;
    }
}

懶單例形式:


package com.wish.modedesign;

public class Singleton {
    private Singleton(){

    }
    private static Singleton instance;
    public static synchronized Singleton getInstance(){   //多線程時留意線程平安
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}

測試類Driver.java

package com.wish.modedesign;

public class Driver {
    public static void main(String[] args) {
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        System.out.println(s1==s2);   //true
    }

}

3.長處和實用場景

1)單例形式的長處:

在內存中只要一個對象,節儉內存空間。
防止頻仍的創立燒毀對象,可以進步機能。
防止對同享資本的多重占用。
可以全局拜訪。
2)實用場景:

須要頻仍實例化然後燒毀的對象。
創立對象時耗時過量或許耗資本過量,但又常常用到的對象。
有狀況的對象類對象。
頻仍拜訪數據庫或文件的對象。
4.應用時留意事項

1)應用時不克不及用反射形式創立單例,不然會實例化一個新的對象

2)應用懶單例形式時留意線程平安成績

3)餓單例形式和懶單例形式結構辦法都是公有的,因此是不克不及被繼續的,有些單例形式可以被繼續(如掛號式形式)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved