單例模式的三種實現方式

2021-10-25 08:56:53 字數 1027 閱讀 6426

所謂「餓漢式」,是指單例項在類載入時刻就已構造完成。

public

class

singleton1

//類載入的初始化階段,會給靜態變數instance賦值,此時單例項得到構建

private

static singleton1 instance =

newsingleton1()

;public

static singleton1 getinstance()

}

由於instance變數是類變數,只保留乙份,多個執行緒同時呼叫getinstance方法,也只會返回同乙個instance物件,因此可以應用於多執行緒環境。

缺點:單例的建立時機過早。

所謂"懶漢式",是指單例項並不是一開始就構建好的,而是需要使用的時候才建立,也就是延遲建立。

懶漢式解決了餓漢式的缺點。

public

class

singleton2

private

static singleton2 instance = null;

public

static singleton2 getinstance()

}}return instance;

}}

雙重檢查+鎖機制,保證了上述**可以在多執行緒環境下可靠執行。

第二種實現懶漢式的方式,利用類載入階段的初始化行為只進行一次,且內部類不隨著外部類的載入而載入,而是在第一次使用的時候才會載入。因此,也可以應用於多執行緒環境。

public

class

singleton3

public

static singleton3 getinstance()

//內部類不會隨著外部類的載入而載入,而是在第一次使用到內部類的時候才會載入

private

static

class

innerclass

}

單例模式的三種實現方式

1.餓漢模式 package com.fullstacker.study.designpattern.singleton 餓漢模式 餓漢模式是執行緒安全的單例模式 author xingguishuai create 2017 03 27 15 53 public class hungrysingl...

實現單例的三種方式

1 必須在該類中 自己先建立出乙個物件並私有化物件.2 私有化自身的構造器 防止外界通過構造器建立新的物件 3 想外暴露乙個公共的靜態方法用於獲取自身的物件 目的 保證某乙個在整個應用中某乙個類有且只有乙個例項 乙個類在堆記憶體只存在乙個物件 即所有指向該型別例項的引用都指向同一塊記憶體空間。cla...

單例的三種實現方式

方式一 類方法實現單例模式 class mysql instance none def init self,host,port self.host host self.port port q classmethod defsingleton cls ifnot cls.instance cls.in...