一.什麼是單例模式
單例模式(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中文網其他相關文章!