首頁 >Java >Java入門 >java中什麼是單例模式?有哪些優點?

java中什麼是單例模式?有哪些優點?

王林
王林轉載
2019-11-25 15:00:243643瀏覽

java中什麼是單例模式?有哪些優點?

一.什麼是單例模式 

單例模式(Singleton Pattern)是 Java 中最簡單的設計模式之一。單例模式就是: 在程式運作期間, 某些類別有且最多只有一個實例物件。這種模式涉及一個單一的類,該類負責創建自己的對象,同時確保只有單一對像被創建。這個類別提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要實例化該類別的物件。

java相關影片教學推薦:java課程

二.單例模式的實作想法

1、靜態化實例物件, 讓實例物件與Class物件互相綁定, 透過Class類別物件就可以直接存取;

2、私有化建構方法, 禁止透過建構方法建立多個實例;

3、提供一個公共的靜態方法, 用來傳回這個類別的唯一實例。

三.單例模式的優缺點

優點:

1、記憶體裡只有一個實例,減少了記憶體的開銷,尤其是頻繁的創建和銷毀實例。

2、避免對資源的多重佔用。

缺點:

沒有接口,不能繼承,與單一職責原則衝突,一個類別應該只關心內部邏輯,而不關心外面怎麼樣來實例化。

四.單例模式的幾種不同寫法

1、懶漢式

package com.yx.singleton;
 
/**
 * Singleton
 * <p>初级原型-懒汉式</>
 * <p>优点:用到时再初始化</>
 * <p>缺点:并发下会产生多个实例</>
 * <p>不推荐</>
 *
 * @author yx
 * @date 2019/11/24 12:18
 */
public class Singleton {
 
    /**
     * 静态化实例对象
     */
    private static Singleton sInstance = null;
 
    /**
     * 私有构造方法
     */
    private Singleton() {
    }
 
    /**
     * 提供一个公共的静态方法, 用来返回这个类的唯一实例.
     *
     * @return 单例对象
     */
    public static Singleton getInstance() {
        if (sInstance == null) {
            sInstance = new Singleton();
        }
        return sInstance;
    }
}

上面這種寫法,在並發環境下,會出現多個實例,線程不安全。

枚舉方式

/**
 * EnumSingleton
 * 枚举类单例模式
 *
 * <p>优点:不需要考虑序列化的问题;不需要考虑反射的问题</>
 * <p>缺点:所有的属性都必须在创建时指定, 也就意味着不能延迟加载; 并且使用枚举时占用的内存比静态变量的2倍还多</>
 *
 * @author yx
 * @date 2019/11/24 15:09
 */
public enum EnumSingleton {
    INSTANCE
}

更多相關文章請造訪:java入門學習

以上是java中什麼是單例模式?有哪些優點?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除