6 單子模式(單例模式)

2022-05-11 17:42:12 字數 2071 閱讀 7089

一、功能:保證在整個應用中只有乙個例項存在。(例如只建立乙個視窗,jdbc連線資料庫程式只連線乙個等)。

二、概念:對某個類只能存在乙個物件例項,並且該類提供了乙個取得其物件例項的方法。

三、單子模式第一種寫法:

步驟:1、首先私有化構造器,這樣在外部就不能隨意new物件了

2、在類的內部定義並產生那個唯一的物件,並限制其訪問許可權為private

3、提供給外部乙個public型別的靜態方法,可以獲得該唯一物件。

/**

* created by administrator on 2018/3/1 0001.

* 最典型的單例模式、單子模式 */

public

class

a //

第一步:私有化構造器,這樣主類就不能隨意的例項化多個物件了

private

static a a=null;//

第二步:初步定義物件,方便後面方法中呼叫判斷該變數

public

static a getinstance()

return

a; }

}

/**

* created by administrator on 2018/3/1 0001. */

public

class

testa

}

缺點:在多執行緒中不能正常工作

四、單子模式第二種寫法

這種寫法能夠在多執行緒中很好的工作:不需要同步。

/**

* created by administrator on 2018/3/1 0001.

* 多執行緒時保證單個執行緒呼叫的單例模式、單子模式,效率低下 */

public

class

b

private

static b b=null

;

public

synchronized

static

b getinstance()

return

b; }

}

/**

* created by administrator on 2018/3/1 0001. */

public

class

testb

}

缺點:效率低下

五、單子模式的第三種寫法 

使用classloader的反射機制來保證初始化instance時只有乙個執行緒。

使用內部類

/**

* created by administrator on 2018/3/1 0001.

* 使用classloader來保證初始化instance時只有乙個執行緒,先載入c類,當需要時再呼叫getinstance方法,載入c1類,初始化 */

public

class

c

public

static

c1 getinstance()

}

/**

* created by administrator on 2018/3/1 0001. */

public

class

testc

}

六、單子模式第四種寫法

用volatile來鎖定變數,用synchronize鎖定方法的雙重鎖定單子模式

public

class

d

private

volatile

static d d=null;//

在jvm的底層對變數進行單執行緒操作

public

synchronized

static d getinstance()

return

d; }

}

public

class

testd

}

模式四(單子模式)

單例類只能有乙個例項,單例類必須自己建立自己的唯一例項,單例類必須給所有其他物件提供這一事例。using system using system.collections.generic using system.text namespace factory public static singlet...

2010 02 23 設計模式之單子模式

單子模式的經典應用 思路比較清晰,寫的過程也比較明白,希望跟我一起在學習開發的人學可以好好參考下 using system using system.collections.generic using system.text namespace singletion 第二步 在外不能new它,那要用...

Java 面試之單子模式

單子模式要滿足以下幾點 1,建構函式私有化,使得不能通過new來例項化物件 2,通過new在類的內部建立唯一的例項化物件 3,定義乙個公有的靜態的方法來返回上一部的物件 以下通過 來講解什麼餓漢模式 public class single 2 宣告乙個靜態的自己的類 private static s...