- 模式理解:單例模式只希望對象只能被創建一次,就是隻能new一次,就是說我們不能直接通過構造方法來創建對象,所以我們先將構造方法私有化,再在自己的類裏直接new一個私有化靜態對象,最後通過一個靜態的方法來調取new出來的私有化靜態對象,這樣外部類就可以通過這個類,直接調取這個靜態方法,從而獲得這個靜態的私有化new出來的對象。
- 運用場景:相當於一個全局變量,只不過這個變量是個對象而已,比如日誌管理,數據庫對象創建等
- 代碼示例:
//構造一個只能實例化一次的對象:
public class Log {
//先私有化構造方法
private Log(){};
//在創建私有化靜態對象
private static Log log=new Log();
//通過靜態方法來獲得靜態對象
public static Log getLog(){
if (log!=null) {
return log;
}
return null;
}
public void show(){
System.out.println("單例模式");
}
}
//編寫測試用例:
public class Main {
public static void main(String[] args) {
Log oneLog=Log.getLog();
Log twoLog=Log.getLog();
if (oneLog==twoLog) {
System.out.println("地址相同,是同一個對象");
}
}
}