設計模式之單例模式

2021-10-04 16:40:49 字數 2296 閱讀 6073

簡介

採取一定的方法保證在整個的軟體系統中,對某個類只能存在乙個物件例項。

單例模式步驟

構造器私有化(防止new)

類的內部建立物件

向外暴露乙個靜態的公共方法

**實現

1、餓漢式(靜態常量)

public

class

singleton

}class

singleton1

//2.類的內部建立物件

private

final

static singleton1 instance =

newsingleton1()

;//static只載入一次,所有例項物件只有一次

//3.向外暴露乙個靜態的公共方法

public

static singleton1 getinstance()

}

2.餓漢式(靜態**塊)

//main測試**略

class

singleton1

private

static singleton1 instance;

//2.類的內部建立物件

static

//3.向外暴露乙個靜態的公共方法

public

static singleton1 getinstance()

}

3.懶漢式(執行緒不安全)

//main測試**略

class

singleton1

private

static singleton1 instance;

//2.類的內部建立物件

//3.向外暴露乙個靜態的公共方法

public

static singleton1 getinstance()

return instance;

}}

執行緒不安全,不推薦使用,違背了單例模式的初衷。

4.懶漢式(執行緒安全)

//main測試**略

class

singleton1

private

static singleton1 instance;

//2.類的內部建立物件

//3.向外暴露乙個靜態的公共方法

public

static

synchronized singleton1 getinstance()

return instance;

}}

加入了synchronized使執行緒同步,也降低了效率,當多個執行緒同時使用該方法時,就必須排隊乙個個來。不推薦使用。

5.雙重檢查(推薦使用)

//main測試**略

class

singleton1

private

static

volatile singleton1 instance;

//volatile當該值變化時,所有執行緒都會跟著變化

//2.類的內部建立物件

//3.向外暴露乙個靜態的公共方法

public

static singleton1 getinstance()

}}return instance;

}}

6.靜態內部類(推薦使用)

//main測試**略

class

singleton1

//2.類的內部建立物件

private

static

class

singletoninstance

//3.向外暴露乙個靜態的公共方法

public

static singleton1 getinstance()

}

7.列舉類(推薦使用)

public

class

singleton

}enum singleton1

餓漢式與懶漢式的區別

餓漢式是類載入時就載入,懶漢式是用到在載入,不會造成記憶體浪費。

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...