餓漢式(靜態常量)應用例項
步驟如下:
構造器私有化 (防止 new )
類的內部建立物件
向外暴露乙個靜態的公共方法。getinstance
**實現
public
class
singletontest01
}//餓漢式(靜態變數)
class
singleton
//2.本類內部建立物件例項
private final static singleton instance =
newsingleton()
;//3. 提供乙個公有的靜態方法,返回例項物件
public
static singleton getinstance()
}
優缺點說明:
優點:這種寫法比較簡單,就是在類裝載的時候就完成例項化。避免了執行緒同步問題。
缺點:在類裝載的時候就完成例項化,沒有達到 lazy loading 的效果。如果從始至終從未使用過這個例項,則會造成記憶體的浪費
這種方式基於 classloder 機制避免了多執行緒的同步問題,不過,instance 在類裝載時就例項化,在單例模式中大多數都是呼叫 getinstance 方法,但是導致類裝載的原因有很多種,因此不能確定有其他的方式(或者其他的靜態方法)導致類裝載,這時候初始化 instance 就沒有達到 lazy loading 的效果
結論:這種單例模式可用,可能造成記憶體浪費
**演示:
package com.atguigu.singleton.type2;
public
class
singletontest02
}//餓漢式(靜態變數)
class
singleton
//2.本類內部建立物件例項
private
static singleton instance;
static
//3. 提供乙個公有的靜態方法,返回例項物件
public
static singleton getinstance()
}
優缺點說明:
這種方式和上面的方式其實類似,只不過將類例項化的過程放在了靜態**塊中,也是在類裝載的時候,就執行靜態**塊中的**,初始化類的例項。優缺點和上面是一樣的。
結論:這種單例模式可用,但是可能造成記憶體浪費
設計模式之單例餓漢式
設計模式之單例餓漢式package cn.q x.design 餓漢式 類載入到記憶體後,就例項化乙個單例,jvm保證執行緒安全 簡單實用,推薦使用!唯一缺點 不管用到與否,類裝載時就完成例項化 class.forname 話說你不用的,你裝載它幹啥 auther wangpeng date 202...
設計模式之單例模式餓漢式
首先,提出乙個問題 什麼是設計模式?就我理解,設計模式就是解決特定問題的一種比較有效的方法,是前人的總結。十分有借鑑的價值。單例模式 是為了解決乙個類在記憶體中只有乙個物件的問題。其基本思想如下 禁止乙個類產生物件,然後在類內部,定義乙個物件,為了讓其他程式訪問這個物件,最後提供乙個訪問它的方法。具...
單例設計模式之餓漢式(面試)
餓漢式 保證物件在堆中開闢的空間有且只有乙個 public class singledata class singledate 2.不能在類載入的時候建立物件,所以這裡不能直接顯示賦值 private static singledate single null 3.要提供乙個公開的靜態方法,共別人獲...