欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

單例模式

定義

單例模式(Singleton Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,確保一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問點(diǎn)。

核心特性

  1. 唯一性:保證一個(gè)類只有一個(gè)實(shí)例存在
  2. 全局訪問:提供全局訪問該實(shí)例的方法
  3. 延遲初始化:通常在第一次被請(qǐng)求時(shí)才創(chuàng)建實(shí)例(懶漢式)

實(shí)現(xiàn)方式

1. 餓漢式(線程安全)

public class Singleton {
    private static final Singleton instance = new Singleton();
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        return instance;
    }
}

  • 類加載時(shí)就初始化實(shí)例
  • 線程安全但可能造成資源浪費(fèi)

2. 懶漢式(線程不安全)

public class Singleton {
    private static Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

  • 延遲初始化
  • 線程不安全

3. 線程安全懶漢式

public class Singleton {
    private static Singleton instance;
    
    private Singleton() {}
    
    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

  • 方法加鎖保證線程安全
  • 每次獲取實(shí)例都要同步,性能較低

4. 雙重檢查鎖(DCL)

public class Singleton {
    private volatile static Singleton instance;
    
    private Singleton() {}
    
    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

  • 減少同步塊的使用,提高性能
  • 需要volatile防止指令重排序

5. 靜態(tài)內(nèi)部類

public class Singleton {
    private Singleton() {}
    
    private static class Holder {
        private static final Singleton INSTANCE = new Singleton();
    }
    
    public static Singleton getInstance() {
        return Holder.INSTANCE;
    }
}

  • 線程安全
  • 延遲加載
  • 實(shí)現(xiàn)簡(jiǎn)單

6. 枚舉實(shí)現(xiàn)

public enum Singleton {
    INSTANCE;
    
    public void doSomething() {
        // ...
    }
}

  • 簡(jiǎn)潔
  • 自動(dòng)支持序列化機(jī)制
  • 絕對(duì)防止多次實(shí)例化
  • 最安全的單例實(shí)現(xiàn)方式

應(yīng)用場(chǎng)景

  1. 需要頻繁創(chuàng)建和銷毀的對(duì)象
  2. 創(chuàng)建對(duì)象耗時(shí)或資源消耗大
  3. 工具類對(duì)象
  4. 訪問數(shù)據(jù)庫或文件的對(duì)象
  5. 需要共享訪問點(diǎn)或共享數(shù)據(jù)的場(chǎng)景

注意事項(xiàng)

  1. 多線程環(huán)境下的線程安全問題
  2. 序列化和反序列化可能破壞單例
  3. 反射攻擊可能破壞單例
  4. 單例模式可能增加代碼耦合度
  5. 單例對(duì)象生命周期長,可能成為內(nèi)存泄漏的來源

單例模式是設(shè)計(jì)模式中最簡(jiǎn)單的模式之一,但實(shí)現(xiàn)一個(gè)健壯的單例需要考慮多種因素,特別是在多線程環(huán)境下。

全部評(píng)論

相關(guān)推薦

評(píng)論
5
5
分享

創(chuàng)作者周榜

更多
牛客網(wǎng)
??推髽I(yè)服務(wù)