單例設計模式之 餓漢式

2021-10-06 03:49:19 字數 1250 閱讀 1828

餓漢式(靜態常量)應用例項

步驟如下:

構造器私有化 (防止 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.要提供乙個公開的靜態方法,共別人獲...