Java 設計模式(單例)

2021-07-15 12:38:08 字數 1541 閱讀 3993

解決:保證了乙個類在記憶體中只能有乙個物件。

怎麼做才能保證這個物件是唯一的呢?

思路:1、如果其他程式能夠隨意用new建立該類物件,那麼就無法控制個數。因此,不讓其他程式用new建立該類的物件。

2、既然不讓其他程式new該類物件,那麼該類在自己內部就要建立乙個物件,否則該類就永遠無法建立物件了。

3、該類將建立的物件對外(整個系統)提供,讓其他程式獲取並使用。

步驟:1、將該類中的建構函式私有化(private:目的:防止外部能夠new物件)。

2、在本類中建立乙個本類物件。

3、定義乙個方法,返回值型別是本類型別。讓其他程式通過該方法就可以獲取到該類物件。

單例分為兩種:1.懶漢式      2.餓漢式

單例的第一種:懶漢式

package single.singledemo1;

//單例

//單例的第一種:懶漢式:::這個版本省記憶體

public class single

//成員方法---通過成員方法去造物件

public static single getinstance()

return s;

}}

單例的第二種:餓漢式

package single.singledemo2;

//單例的第二個版本:餓漢式:::這個版本更加耗記憶體

public class single

public static single getinstance()

}

單例兩種方法的演示:

package single.singledemo2;

public class singledemo

}

對於單例的第一種用法(懶漢式)來講,在多執行緒下存在bug,應該用(物件鎖)synchronized來解決這一問題:**如下:

package single.singledemo3;

//單例的第三個版本:懶漢式(解決在多執行緒下存在漏洞的版本)

//這裡說明一下:對於"懶漢式"版本來說,在多執行緒的情況下存在漏洞:需要用物件鎖(synchronized)來解決

public class single1

public static synchronized single1 getinstance()

return s;

}}

多執行緒下單例的演示**:

package single.singledemo3;

public class testthread {

public static void main(string args) {

thread ts = new thread[10];

for(int i=0;i

java設計模式 單例設計模式

public class main 餓漢式 空間換時間 多執行緒訪問不會建立多個物件 author admin class singleton 2建立本類物件 private static singleton s new singleton 3對外提供公共的訪問方法 public static si...

Java單例設計模式

單例設計模式也有人叫單態,基本上有兩種寫法一種是餓漢式,另外一種是懶漢式。餓漢式就是一開始就建立了例項物件 public class singleton public static singleton getintance 懶漢式是需要的時候才建立 它比較懶 而且會涉及執行緒同步問題,需要增加同步 ...

java 單例設計模式

單例設計模式 保證乙個類在記憶體中只有乙個物件。模式 模式就是解決 一類 問題的固定步驟 模式的概念最早起源於建築行業 建房子的步驟都是一樣子 打地基 澆柱子 蓋樓面 砌牆 封頂 裝修 入住軟體行業中23種設計模式 單例設計模式 模板設計模式 裝飾者設計模式 觀察者設計模式 工廠設計模式單例設計模式...