java設計模式之單例模式

2021-09-14 02:05:55 字數 1783 閱讀 7829

單例模式,是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中,應用該模式的乙個類只有乙個例項。即乙個類只有乙個物件例項。

實現單例模式的思路是:乙個類能返回物件乙個引用(永遠是同乙個)和乙個獲得該例項的方法

1、單例模式之餓漢模式

package com.weather.spring.cloud.initializrstart.design.mode.singleton;

/** * @program: msa-weather-master

* @description: this is a singleton design mode demo

* @author: w.hl

* @create: 2019-03-29 17:38

**/public class singleton

public static singleton getinstance()

}

執行緒安全但是容易造成資源浪費

2、飽含模式

package com.weather.spring.cloud.initializrstart.design.mode.singleton;

/** * @program: msa-weather-master

* @description: this is a singleton design mode demo

* @author: w.hl

* @create: 2019-03-29 17:38

**/public class singleton

public static singleton getinstance()

return instance;

}}

執行緒不安全,多執行緒時候容易出現多個不相同的例項

單例模式優化

package com.weather.spring.cloud.initializrstart.design.mode.singleton;

/** * @program: msa-weather-master

* @description: this is a singleton design mode demo

* @author: w.hl

* @create: 2019-03-29 17:38

**/public class singleton

public static synchronized singleton getinstance()

return instance;

}}

通過synchronized關鍵字暴力控制線程安全,併發效能差,載入慢

package com.weather.spring.cloud.initializrstart.design.mode.singleton;

/** * @program: msa-weather-master

* @description: this is a singleton design mode demo

* @author: w.hl

* @create: 2019-03-29 17:38

**/public class singleton

public static singleton getinstance()

}return instance;

}}

java設計模式之單例模式

單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...

java設計模式 之 單例模式

單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...

Java設計模式之單例模式

說到單例模式 大家一定非常熟悉 這是最常見也是設計模式中相對簡單 好理解的設計模式 今天就跟大家掰一掰單例模式 單例模式確保某個類只有乙個例項 應用場景 執行緒池 快取 等物件常常被設計成單例 然而單例分兩種 1 惡漢式 2 懶漢式 我們先來看下 惡漢式 public class singleton...