吃透SpringBoo的這些t知識,你就已經超過90%的Java面試者了
阿新 • • 發佈:2022-03-04
單例設計模式
懶漢式
/* * 單例設計模式:懶漢式 * */ public class SingleTonDemo02 { public static void main(String[] args) { Demo02 instance1 = Demo02.getInstance(); Demo02 instance2 = Demo02.getInstance(); System.out.println(instance1 == instance2); } } class Demo02 { // 1.私有化類的構造器 private Demo02() { } // 2.在內部靜態宣告,沒初始化 private static Demo02 instance = null; // 宣告一個公共靜態的返回這個例項物件的方法 public static Demo02 getInstance() { // 判斷是否例項化過 if (instance != null) { // 例項賦值 instance = new Demo02(); } return instance; } }
餓漢式
package com.designMode.singleTon; /* * 單例設計模式:餓漢式 * */ public class SingleTonDemo01 { public static void main(String[] args) { // 可以拿到 Demo01 instance = Demo01.getInstance(); // 無論第幾次都是同一個,只有一個例項 Demo01 instance1 = Demo01.getInstance(); // 為true System.out.println(instance == instance1); } } // 餓漢式 class Demo01 { // 1.私有化類的構造器 private Demo01() { } // 2.內部靜態建立類的物件 private static Demo01 instance = new Demo01(); // 3.提供公共的靜態方法 public static Demo01 getInstance() { return instance; } }
區別
餓漢式:
- 壞處:開始就建立物件,生命週期過長,節約時間
- 好處:執行緒安全
懶漢式:
- 好處:延遲物件的建立,節約記憶體
- 壞處:目前寫法不安全