1.用作全局變量,可以作爲一個Cache;
例如:要獲取一個URL服務器請求host,可以通過HttpRequestServerlet**.java獲得host,並將其保存在單例實例中,可以供項目直接調用。
2.一個簡單的單例Test類,測試如下:
public class Test {
private String str = "abc";
private Test(){}
private static class Inner{
private static final Test test = new Test();
}
public static Test getInstance(){
return Inner.test;
}
public void setStr(String s){
this.str = s;
}
public static void main(String[] args) throws InterruptedException {
// String a = Base64.encodeBase64String(DigestUtils.md5Hex(System.currentTimeMillis() + "abc").getBytes());
// System.out.println(a + ".zip");
Test a = Test.getInstance();
System.out.println(a);//Test@3581c5f3
a.setStr("AAA");//
Thread.sleep(1000);
Test b = Test.getInstance();
System.out.println(b);//Test@3581c5f3
System.out.println(b.str);//AAA
Thread.sleep(1000);
/*下面兩個示例可以驗證單例模式。*/
Test c = new Test();
System.out.println(c.str); //abc
c.setStr("BBB"); // 設置無效!!
Test d = Test.getInstance();
System.out.println(d.str);//AAA 依舊是AAA,所以Test c的創建無法在項目下起作用。
}
}