1. 程式人生 > >設計模式(java)- 單例模式

設計模式(java)- 單例模式

單例模式

在一個專案中我們最常見的就是單例模式,這也是很多設計模式中最簡單的一種設計模式,它的作用主要是保證一個程式中該類的例項物件有且只有一個。單例類多用於工具類,一個模組的介面類或者叫入口類(確認該模組在程式中只需要一個例項物件),以及工廠模式中的工廠類也常常作為單例使用。之前有用c#寫過單例模式的程式碼用例,所以這裡就不過多的介紹單例模式的寫法和原理,直接上用例。

餓漢式

class ESingleton0 {
	private ESingleton0() {}
	private static ESingleton0 instance = new ESingleton0();
	
	public
static ESingleton0 getInstance() { return instance; } }

懶漢式

執行緒安全

class ESingleton2 {
	private ESingleton2() {}
	private static ESingleton2 instance = null;
	
	public static synchronized ESingleton2 getInstance() {
		if (instance == null) {
			instance = new ESingleton2();
		}
		
		return instance;
} }

雙重判斷

class ESingleton3 {
	private ESingleton3() {}
	private static ESingleton3 instance = null;
	
	public static ESingleton3 getInstance() {
		if (instance == null) {
			synchronized(ESingleton3.class) {
				if (instance == null) {
					instance = new ESingleton3();
				}
			}	
		}
		return instance;
} }

該方法的較上一個的優點是:第一次呼叫獲取例項的方法需要加鎖後,後面再呼叫就不需要加鎖了,是一種效能的提升。

靜態塊

class ESingleton1 {
	private ESingleton1() {}
	private static ESingleton1 instance = null;
	
	static {
		instance = new ESingleton1();
	}
	
	public static ESingleton1 getInstance() {
		return instance;
	}
}

靜態內部類

class ESingleton4 {
	private ESingleton4() {}
	
	private static class ESingleton {
		private static final ESingleton4 instance = new ESingleton4();
	} 
	
	public static ESingleton4 getInstance() {
		return ESingleton.instance;
	}
}

相關推薦

設計模式java- 模式

單例模式 在一個專案中我們最常見的就是單例模式,這也是很多設計模式中最簡單的一種設計模式,它的作用主要是保證一個程式中該類的例項物件有且只有一個。單例類多用於工具類,一個模組的介面類或者叫入口類(確認該模組在程式中只需要一個例項物件),以及工廠模式中的工廠類也常

java設計模式---1模式

單例模式 定義: 確保一個類只有一個例項, 而且自行例項化並向整個系統提供這個例項 保證只有一個例項,只能是不讓外面訪問的類的構造方法,所以就構造方法寫成私有的,向整個系統提供一個例項那麼就只能定義一個static的例項返回回去了,所以程式碼可以這樣寫: public class Sin

Java設計模式-模式模式

餓漢式單例類 餓漢式單例類在載入時單例物件已經被建立。程式碼如下: /** * 懶漢式單例 * @Author: Rick * @Date: 2018/10/31 17:44 */ public class EagerSingleton { pr

Java設計模式模式

目錄 1、單例模式簡介 1.1 應用例項 1.2 優勢和劣勢 1.3 使用場景 2、單例模式實現 2.1 餓漢式 2.2 懶漢式,執行緒不安全 2.3 懶漢式,執行緒安全 2.4 雙檢

設計模式---模式

由於 div 懶漢式 其它 ins class single sin pub 1、簡介   作為對象的創建模式,單例模式確保某一個類只有一個實例,並且自行實例化並向整個系統提供這個實例,這個類稱為單例類 2、單例模式有以下三個特點   2.1、單例類只能有一個實例   

23種設計模式1-模式

如果 static 拓展 銷毀 jvm垃圾收集器 單例類 不為 全局 返回值 定義: 單例模式,是一種常用的軟件設計模式。在它的核心結構中只包含一個被稱為單例的特殊類。通過單例模式可以保證系統中一個類只有一個實例。即一個類只有一個對象實例。 特點:

設計模式1----模式

內存 內部 gin strong 系統 方法 main 重新 out 簡介: 單例模式(Singleton)是一種常用的軟件設計模式,在它的核心結構中只包含一個被稱為單例的特殊類。 定義: 確保一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。 單例模式 單例模式

設計模式模式

分享 公有 交互 線程 加鎖 解決 操作 編譯 進入 1.單例模式(Singleton):由於某種需要,要保證一個類在程序的生命周期中只有一個實例,並提供一個該實例的全局訪問方法。 2.單例模式(Singleton)結構圖: Singleton類,定義了一個GetInst

設計模式1——模式

虛擬 span 源碼 加載 定義 實例變量 不能 內存 而且 在Java開發過程中,很多場景下都會碰到或要用到單例模式,在設計模式裏也是經常作為指導學習的熱門模式之一,相信每位開發同事都用到過。我們總是沿著前輩的足跡去做設定好的思路,往往沒去探究為何這麽做,所以這篇文章對單

跟著別人學設計模式-----模式詳解

    作者:zuoxiaolong8810(左瀟龍),轉載自:http://www.cnblogs.com/zuoxiaolong/p/pattern2.html             上一章

常用的軟體設計模式模式

單例模式:即一個類只有一個例項,在類裡自己建立自己的例項。 優點: (1)單例模式會阻止其他物件例項化其自己的單例物件的副本,從而確保所有物件都訪問唯一例項。 (2)因為類控制了例項化過程,所以類可以靈活更改例項化過程。尤其是在C++中,每次new都要delete,而是用單例模式可以避免

設計模式5模式

模式介紹 單例模式是一種建立型設計模式,其中一個類只保證只有一個例項,該例項可以全域性訪問。 這意味著該模式強制特定物件不具有可訪問的建構函式,並且對該物件執行的任何訪問都是在該物件的同一例項上執行的。 示例 我們模擬一下餐館裡用於通知上菜鈴鐺,它在櫃檯上只有一個。 下面程式碼中syncRoot是為

設計模式模式詳解

愉快的開始自己的技術積累 ,設計模式中使用最普遍的單例模式開始; 設計模式中最為大家熟悉的必須是單例模式,專案中 必須 使用到的套路。首先陳述下我對 框架,模式的一些理解。   從學校出來,開始面試的時候張口框架,閉口模式,真的問道什麼是框架,我只能死鴨子嘴硬的強調 MVC ,

PHP設計模式——模式Singleton Pattern

PHP設計模式(一)——單例模式(Singleton Pattern) 單例模式(Singleton Pattern):顧名思義,就是隻有一個例項。作為物件的建立模式,單例模式確保某一個類只有一個例項,而且自行例項化並向整個系統提供這個例項。 (一)為

go 設計模式模式

go 的單例模式寫法比較簡單,可以通過sync.Once來輔助。 type Singleton struct { name string } var ( once sync.Once instance *Singleton ) func New()

設計模式模式

單例模式在日常使用非常平凡 一般有4種寫法 懶漢式 也稱為雙重鎖定 package com.zhy.pattern.singlton; public class Singleton02 { private static Singleton02 instance;

一個故事貫穿設計模式模式

   包結構:    類結構:      實現程式碼: package com.automannn.design_mode.singleton.test; import com.automannn.design_mode.singleton.OOP_class.

headfirst設計模式6模式

前言 這一章的課題看起來就很和藹可親了,比起前面繞的我不要不要的工廠模式,那感覺真是太好了,但是正是因為簡單,那麼問題就來了,我怎麼才能把這個東西敘述清楚?怎麼樣才能老少咸宜呢? 如何能夠在把這個東西講清楚的同時,引入一些新的東西讓這個設計模式能顯得不那麼普通呢?我不知道能不能做到,不過,吹x馬上開始

設計模式—— 模式

一、含義 在一個系統中,確保一個類只有一個例項,並提供一個全域性訪問點,這個類在系統中是獨一無二的。 二、要點 1.單例模式確保程式中最多隻有一個這個類的例項。 2.在java中實現單例模式需要把構造器私有化,並提供一個靜態方法和靜態變數。 三、分析單例模式 首先來看一下最經

設計模式——模式

單例模式,主要由以下幾個模組組成:私有的靜態物件例項,私有的構造方法(避免外部呼叫new物件,保證只有一個物件的例項),一個共有的靜態獲取物件的方法(供外部呼叫)。 程式碼如下: 懶漢式單例模式(在需要的時候,也即呼叫共有的靜態獲取物件的方法時才建立物件): packa