# 單例模式
[TOC]
在實際的開發中,絕大部分的服務性質的類都會設計成單例模式
所謂的單例模式,就是類只有一個對象,外部要使用該類的對象,通過調用一個類方法實現。
## 單例模式特點
* 1、單例類只能有一個實例。
* 2、單例類必須自己創建自己的唯一實例。
* 3、單例類必須給所有其他對象提供這一實例。
## 單例模式實現
關鍵代碼:保證構造函數是私有的。
~~~
/**
* 餓漢式單例模式
* @author lzq31
*
*/
public class Service2 {
private static Service2 service = new Service2();
private Service2() {
}
public static Service2 getInstance() {
return service;
}
}
~~~
~~~
/**
* 懶漢式單例模式
* @author lzq31
*
*/
public class Service {
private static Service service;
private Service() {
}
public static Service getInstance() {
if (null == service) {
service = new Service();
}
return service;
}
}
~~~
## 單例模式的檢測
~~~
//當Demo為單例模式時
public class Demo {
private static Demo demo = new Demo();
private Demo() {}
public static Demo getInstance() {
return demo;
}
public int a = 1;
}
public class Demo2 {
public static void main(String[] args) {
Demo demo = Demo.getInstance();
Demo demo2 = Demo.getInstance();
demo.a = demo.a + 1;
System.out.println(demo.a);
System.out.println(demo2.a);
}
}
//當Demo不為單例模式的時候
public class Demo {
public int a = 1;
}
public class Demo2 {
public static void main(String[] args) {
Demo demo = new Demo();
Demo demo2 = new Demo();
demo.a = demo.a + 1;
System.out.println(demo.a);
System.out.println(demo2.a);
}
}
~~~