java 設計模式-單例模式-懶載入
首先推薦種最好的單例模式實現方式(沒有之一)
public class Manager {
private Manager() {
}
public static Manager getInstance() {
return ManagerHolder.instance;
}
private static class ManagerHolder {
private static final Manager instance = new Manager();
}
}
然後解釋下為什麼要用這種方式:
* 內部類只在需要的時候才會被類載入器載入,實現了懶載入,即在需要的時候才例項化出一個Manager,而且是唯一的一個
* 同時由於instance是static final型別,保證了記憶體中只有這樣一個例項存在,而且只能被賦值一次,從而保證了執行緒安全性
(即使在高併發的情況下多個執行緒同時訪問getInstance()方法 也能夠保證例項的唯一性)
其他沒有采用內部類的實現方式 以下是目前見過最好的:
public static class SingletonOptimizeLazy { static SingletonOptimizeLazy instance = null; public static SingletonOptimizeLazy getInstance() { if (instance == null) { createInstance(); } return instance; } private synchronized static SingletonOptimizeLazy createInstance() { if (instance == null) { instance = new SingletonOptimizeLazy(); } return instance; } }
以上這種解決方式 主要思想是將例項化的過程抽象出來 放在一個sychronized方法中執行 這樣也能夠實現懶載入與併發安全
不過仍然推薦使用內部類的解決方案
相關推薦
Java設計的單例模式(三種寫法)
最近在一些部落格上面看到的單例模式,無一例外都是餓漢和懶漢,這兩個確實是單例模式,但是各有自己的弊端 先上程式碼吧 //餓漢式 class ClassA{ private static final ClassA instance = new ClassA(); pub
java 設計模式-單例模式-懶載入
首先推薦種最好的單例模式實現方式(沒有之一) public class Manager { private Manager() { } public static Manager getInstance() {
Java設計模式 - 單例模式
選擇 工廠方法 ech http locking 理解 多個 reg getname 本文繼續介紹23種設計模式系列之單例模式。 概念: Java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。 單例模式有
Java設計模式-單例模式
影響 沒有 環境 成員 == 比較 .net 非線程安全 align 轉自:http://blog.csdn.net/jason0539/article/details/23297037 Java中單例模式是一種常見的設計模式,單例模式的寫法有多種,這裏主要只介紹:懶漢
Java 設計模式 ------ 單例模式
stat out instance bsp 問題 構造函數 程序開發 div .cn 在程序開發中,有時我們只需要一個對象就可以了,如日誌對象,工具類,怎麽樣保證整個應用程序中有且只有一個對象呢?這就要用到單例模式了,通過名字就可以看出來,它就是保證整個應用程序中只有一
Java設計模式--單例模式
提高 安全問題 color 自動 如果 排序 get 重排序 col 直想寫點關於設計模式的東西,卻懶到現在都沒寫過什麽,今天上午看到項目中的代碼,就在這個中午抽出時間寫點東西,拋個項目截圖先: 單例模式: 單例模式,是一種常用的軟件設計模式。在它的核心結構
java設計模式----單例模式
pri 獲取對象 tor 能夠 指向 style aps view 5.1 1.單例模式 1.1.引言:據我了解,單例模式應該屬於java設計模式中較為簡單的一個設計模式,作為設計模式的開篇,先從簡單入手,來慢慢理解設計模式。 1.2.定義:單例模式,是一種常用的軟
JAVA 設計模式—單例模式
成員變量 說明 不用 spa java程序 成員 AS AI 唯一性 JAVA中的單例模式是一種廣泛使用的設計模式,是Java裏23種設計模式之一。單例模式的作用是保證在JAVA程序中,某個類只有一個程序存在。 這裏簡單介紹其兩種基本寫法:餓漢式和懶漢式。 餓漢式與懶漢式區
JAVA設計模式-單例模式(Singleton)線程安全與效率
保存 ring 使用方法 部分 rac cheng 原因 cts 要求 一,前言 單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因為本文就是按照這篇文章中的八種單例模
java常用設計模式--單例模式簡單例子
package com.ruanyun;/** * @Auther: maxw * @Date: 2018/11/10 17:29 * @Description: */public class Test4 { public static void main(String args[]){
java設計模式(單例模式)的效能及思想
單例模式: 單例模式是設計模式中使用最普遍的模式之一,是一種物件建立模式,用於生產一個物件的具體例項,塔可以確保系統中一個類只產生一個例項.那麼在j
Java設計模式 —— 單例模式
單例模式的定義: 一個類只能建立一個例項,每個例項有一個全域性唯一的訪問點 我們為什麼需要單例模式: 有一些物件我們只需要一個,如執行緒池(threadpool)、快取(cache)、日誌物件、充當驅動程式的物件等。如果創建出多個例項,就會導致很多問題的產生,例如:
Java設計模式-單例模式、觀察者模式、工廠模式
單例設計模式 概念: 全域性只有一個例項,自行例項化物件,自行向整個系統提供這個例項。 應用場景: 需要全域性只有一個例項的時候,如儲存使用者資訊。 只有一個訪問途徑 優點: 全域性只有一個例項,避免了頻繁的建立例項,耗費的資源。 提
java設計模式——單例模式(三)
容器單例模式 之前學習Structs2,Spring框架時,經常會聽到單例,多例。雖然這與單例模式不太一樣,但是都很類似。在程式執行的時候,就載入所有的例項,然後用的時候直接取出 看下面程式碼: /** * @program: designModel * @description: 容器單例模
JAVA設計模式-單例模式(Singleton)執行緒安全與效率
一,前言 單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因為本文就是按照這篇文章中的八種單例模式進行探索的。 本文的目的是:結合文章中的八種單例模式的寫法,使用實際的示例,來演示執行緒安全和效率
設計模式(Java隨筆)—單例模式
單例模式(Singleton Pattern):5種建立型模式中的一種,有關單例模式的所有建立方法參考:Java單例模式——並非看起來那麼簡單(總結不易,感謝!),本文中,我只對開發中常用的兩種(多執行緒)方法和Java特有的列舉法進行程式碼複寫。 首先,還是貼一下單例的定
[Java] [設計模式] [ 單例模式 ]
定義 確保單例類只有一個例項,並且這個單例類提供一個函式介面讓其他類獲取到這個唯一的例項。 如果某個類,建立時需要消耗很多資源,即new出這個類的代價很大; 或者是這個類佔用很多記憶體,如果建立太多這個類例項會導致記憶體佔用太多。上述情況下就應該使用單例模式 單
JAVA 23種設計設計模式---單例模式
單例模式有兩種 第一種:餓漢式單例模式 第二種:懶漢式單例模式 概念:在它的核心構建中包含一個被稱為單例的特殊類 我們在使用單例模式時只要抓住以下三個特點就可以了!! 特點: 1.單例類只能有一個例項。構造方法限定為private從而避免類在外部被例項化。 2
Java設計模式-單例模式(二)單例模式類
餓漢式單例類 餓漢式單例類在載入時單例物件已經被建立。程式碼如下: /** * 懶漢式單例 * @Author: Rick * @Date: 2018/10/31 17:44 */ public class EagerSingleton { pr
淺談Java設計模式——單例模式
一、概述 單例模式主要是為了避免因為建立了多個例項造成資源的浪費,且多個例項由於多次呼叫容易導致結果出現錯誤,而使用單例模式能夠保證整個應用中有且只有一個例項。 二、定義 定義:只