1. 程式人生 > 其它 >餓漢式和懶漢式

餓漢式和懶漢式

餓漢式和懶漢式

餓漢式和懶漢式

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. 單例模式應用場景

參考連結

https://www.bilibili.com/video/BV1Kb411W75N?p=325