餓漢式和懶漢式
阿新 • • 發佈:2021-11-02
餓漢式和懶漢式
餓漢式和懶漢式
1. 餓漢式
package com.atguigu.java2; /** * @author beyondx * @create 2021-11-02 14:37 */ public class SingletonTest1 { public static void main(String[] args) { Bank bank1 = Bank.getInstance(); Bank bank2 = Bank.getInstance(); System.out.println(bank1 == bank2); } } // 餓漢式 class Bank{ // 1.私有化類的構造器 private Bank(){ } // 2.內部建立類的物件 // 要求此物件也必須宣告為靜態的 private static Bank instance = new Bank(); // 3. 提供公共的靜態的方法, 返回類的物件 public static Bank getInstance(){ return instance; } }
2. 懶漢式
package com.atguigu.java2; /** * 單例模式的懶漢式實現 * @author beyondx * @create 2021-11-02 14:44 */ public class SingletonTest2 { public static void main(String[] args) { Order order1 = Order.getInstance(); Order order2 = Order.getInstance(); System.out.println(order1 == order2); } } class Order{ // 1.私有化類的構造器 private Order(){ } // 2.先聲明當前類物件, 沒有初始化 private static Order instance = null; // 3.宣告 public static 的返回當前類物件的方法 public static Order getInstance(){ if(instance == null){ instance = new Order(); } return instance; } }
沒看懂
3. 餓漢式和懶漢式區別
餓漢式
壞處: 物件載入時間過長
好處: 執行緒安全
懶漢式
好處: 延遲物件建立
壞處: 目前執行緒不安全--> 到多執行緒內容時, 再修改
4. 單例模式應用場景
參考連結