實現單例的三種方式

2021-07-25 18:00:19 字數 1129 閱讀 1889

1)必須在該類中

,自己先建立出乙個物件並私有化物件.

2)私有化自身的構造器

,防止外界通過構造器建立新的物件

.3)想外暴露乙個公共的靜態方法用於獲取自身的物件

.目的:保證某乙個在整個應用中某乙個類有且只有乙個例項

(乙個類在堆記憶體只存在乙個物件

),即所有指向該型別例項的引用都指向同一塊記憶體空間。

class arrayutil 

publicstatic arrayutil getinstance()

public void dowork() }

public class singletondemo

}

1)步驟跟餓漢模式差不多,不過只是在要用到時才建立物件

2)synchronized

對於非static方法,

同步鎖就是

this.

對於static方法,

我們使用當前方法所在類的位元組碼物件

(arrayutil.class).

3) 『雙重檢查加鎖』機制的實現會使用關鍵字

volatile

,它的意思是:被

volatile

修飾的變數的值,將不會被本地執行緒快取,

所有對該變數的讀寫都是直接操作共享記憶體,從而確保多個執行緒能正確的處理該變數。

class arrayutil 

publicstatic arrayutil getinstance()}}

return instance;

}public void dowork() }

publicclasslazysingletondemo

}

列舉來實現是絕對安全,因為反射也不能建立物件

為了更像是工具所以寫了個

getinstance()

方法返回列舉物件

enum  arrayutil 

publicstatic arrayutil getinstance()}

publicclass enumsingletondemo

}

單例的三種實現方式

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

單例模式的三種實現方式

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

單例模式的三種實現方式

所謂 餓漢式 是指單例項在類載入時刻就已構造完成。public class singleton1 類載入的初始化階段,會給靜態變數instance賦值,此時單例項得到構建 private static singleton1 instance newsingleton1 public static s...