java單例模式代碼怎么寫

小億
88
2023-12-11 16:09:43

單例模式(Singleton Pattern)是一種創(chuàng)建型設(shè)計(jì)模式,它保證一個(gè)類只有一個(gè)實(shí)例,并提供一個(gè)全局訪問(wèn)這個(gè)實(shí)例的入口。在Java中,可以通過(guò)以下幾種方式來(lái)實(shí)現(xiàn)單例模式:

  1. 懶漢式單例模式(Lazy Initialization):
public class Singleton {
    private static Singleton instance;

    private Singleton() {
        // 私有構(gòu)造函數(shù),防止外部類直接實(shí)例化
    }

    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  1. 餓漢式單例模式(Eager Initialization):
public class Singleton {
    private static Singleton instance = new Singleton();

    private Singleton() {
        // 私有構(gòu)造函數(shù),防止外部類直接實(shí)例化
    }

    public static Singleton getInstance() {
        return instance;
    }
}
  1. 雙重檢查鎖定單例模式(Double-Checked Locking):
public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {
        // 私有構(gòu)造函數(shù),防止外部類直接實(shí)例化
    }

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

以上是常見(jiàn)的三種單例模式的實(shí)現(xiàn)方式,可以根據(jù)具體的需求選擇適合的方式。需要注意的是,單例模式在多線程環(huán)境下需要考慮線程安全問(wèn)題,可以通過(guò)加鎖或者使用volatile關(guān)鍵字來(lái)實(shí)現(xiàn)線程安全。

0