單例模式:是一種常用的軟體設計模式,中心思想:乙個類保證只有乙個例項。
有些物件我們只需要乙個,如果乙個全域性使用的類頻繁地建立與銷毀,這樣會造成很多io的消耗。例如我們在實際專案中:對於配置檔案、工具類、執行緒池、快取、日誌物件等。這些物件,我們都是需要保證其實例只有乙個,所以需要單例模式的構建。學習過spring的同學,應該都知道在spring中bean的scope(作用範圍)引數的預設設定值就是單例模式。每個bean定義只生成乙個物件例項,每次getbean請求獲得的都是這個唯一例項。
/**
* 單例模式singleton
* 餓漢模式eagersingleton
* 特點:載入類時比較慢,但是執行時獲取物件的速度比較快,執行緒安全。
*/public class eagersingleton
//2.建立類的唯一例項,使用private static修飾,外界不能直接訪問
private static eagersingleton instance = new eagersingleton();
//3.提供乙個用於獲取唯一例項的方法,使用public static修飾
public static eagersingleton getinstance()
}
package com.hugo.designpattern;
/** * 單例模式singleton
* 懶漢模式lazysingleton
* 特點:載入類時比較快,但是執行時獲取物件的速度比較慢,執行緒不安全。
*/public class lazysingleton
//2.建立類的唯一例項,使用private static修飾,外界不能直接訪問
private static lazysingleton instance;
//3.提供乙個用於獲取唯一例項的方法,使用public static修飾
public static lazysingleton getinstance()
return instance;
}}
因為***餓漢模式***在載入類時,就直接new乙個唯一例項,所以載入時,速度會比較慢;另一方面,正是由於類載入時就建立了這個唯一例項,所以執行時,獲取物件例項,速度會比較快。執行緒安全。
因為***懶漢模式***在載入類時,並沒有直接new乙個唯一例項,所以速度會比較快;另一方面,執行時,獲取物件例項,物件存在就直接返回,不存在就new乙個唯一例項,速度會比較慢。執行緒不安全。
java設計模式之單例模式
單位面試題目中有一道關於單例模式的題目.大多數參加筆試的同事都會寫出getinstance這個函式,但是當我問起什麼情況下需要使用單例 單例具體有什麼好處的時候 static函式也可以構建唯一例項,為什麼還需要單例.從使用單例的經驗來看,如下場景下,個人感覺應該使用單例 1.如果需要構建乙個工具類,...
java設計模式 之 單例模式
單例模式 有些類在程式執行過程中只需要儲存乙個例項,比如檔案管理類,音訊管理類,那麼我們如何實現乙個單例類呢?有以下幾點 1 定義乙個靜態變數 2 建構函式私有化 3 提供乙個public 靜態方法,獲取這個例項 4 一定要做執行緒同步 public static class singleton p...
Java設計模式之單例模式
說到單例模式 大家一定非常熟悉 這是最常見也是設計模式中相對簡單 好理解的設計模式 今天就跟大家掰一掰單例模式 單例模式確保某個類只有乙個例項 應用場景 執行緒池 快取 等物件常常被設計成單例 然而單例分兩種 1 惡漢式 2 懶漢式 我們先來看下 惡漢式 public class singleton...