直播軟體搭建,Java設計模式單例模式

zhibo系統開發發表於2023-05-16

直播軟體搭建,Java設計模式單例模式

1.單例模式的例子

根據單例模式的特徵,現在來寫一下程式碼。

1.只有一個例項。那麼就是得把例項作為該類的屬性同時需要用static表示其,用private來體現一下封裝更美觀。

2.建立類的物件需要有構造器吧,因為只能有一個例項,也就是說外部不能建立這個類的物件,所以構造器必須私有化。

3.這個物件是私有的就必須提供許可權為public的方法獲取。


示例一:餓漢式

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


現在其實就完成了單例模式的程式碼了。Order類只有一個例項就是instance。但其實單例模式有兩種寫法。上面這種叫做餓漢式。還有一種叫懶漢式。下面寫一下懶漢式。


示例二:懶漢式

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


2.解決

為解決這個問題,就需要為getInstance方法加鎖。阻止執行緒1呼叫getInstace方法時,其他執行緒也呼叫getInstance。簡單說一下加鎖,就是限制對共享資料的操作,使用synchronized把對共享資料的操作包起來。使得執行緒1執行完操作共享資料後,執行緒2才可以執行(學完多執行緒更能明白)


加鎖方式有五種

// 法一 直接枷鎖
public static synchronized Order getInstance() { // 這種其實也是Order類物件加鎖
    if (instance == null) {
        instance = new Order();
    }
    return instance;
}
// 法二
public static Order getInstance() {
    synchronized(Order.class) { // 用Order類物件加鎖
        if (instance == null) {
            instance = new Order();
        }
        return instance;
    }
}
// 法三 只是效率比前兩者更高
public static Order getInstance() {
    if (instance == null) {  // 也是Order類物件加鎖
        synchronized(Order.class) {
            if (instance == null) {
                instance = new Order();
            }
        }
    }
    return instance;
}
// 法四 靜態內部載入
public class Order {
    private static class Order() {
        private static Order instance = new Order();
    }
    private Order(){}
    public static Order getInsatnce() {
        return Order.instance;
    }
}
// 法五 列舉方法
public enum Order {
    INSTANCE; // INSTANCE就是Order的單例
    public void doSomething() {
        // 要做的事情
    }
}


以上就是 直播軟體搭建,Java設計模式單例模式,更多內容歡迎關注之後的文章


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69978258/viewspace-2952394/,如需轉載,請註明出處,否則將追究法律責任。

相關文章