第一章:Java設計模式-單例模式
一、單例模式-餓漢模式
package com.xm.designpattern.single;
/**
* 單例模式-餓漢模式
* 原理: 不管是否使用,類載入時就初始化好
* 缺點: 非執行緒安全,只適合單執行緒使用
* @author ouyangjun
*
*/
public class HungrySingle {
private HungrySingle hungrySingle = new HungrySingle();
public HungrySingle getInstance(){
return hungrySingle;
}
}
二、單例模式-懶漢模式
package com.xm.designpattern.single; /** * 單例模式-懶漢模式 * @author ouyangjun */ public class LazySingle { /** * 原理: 在需要用到例項的時候才去建立 * 缺點: 非執行緒安全,只適合單執行緒使用 * @return */ private LazySingle lazySingle = null; public LazySingle getInstance(){ if(lazySingle==null){ lazySingle = new LazySingle(); } return lazySingle; } /** * 原理: 在需要用到例項的時候才去建立 * 缺點: 執行緒安全,可多執行緒使用,但比較消耗效能,因為不是所有情況都需要同步 * @return */ private LazySingle lazySingleSafe = null; public synchronized LazySingle getInstanceSafe(){ if(lazySingleSafe==null){ lazySingleSafe = new LazySingle(); } return lazySingleSafe; } }
三、單例模式-懶漢模式,雙重安全校驗
package com.xm.designpattern.single; /** * 單例模式-懶漢模式,雙重安全校驗 * 原理: 當例項為空的時候,先鎖定,再建立例項,再放開鎖,原理上是沒問題的,可使用 * 缺點: 多重校驗,容易出錯 * @author ouyangjun */ public class DoubleLazySingle { private DoubleLazySingle doubleLazySingle = null; public DoubleLazySingle getInstance(){ if(doubleLazySingle==null){ synchronized(DoubleLazySingle.class){ if(doubleLazySingle==null){ doubleLazySingle = new DoubleLazySingle(); } } } return doubleLazySingle; } }
四、單例模式-內部類實現(推薦使用)
package com.xm.designpattern.single;
/**
* 單例模式-內部類實現
* 原理: 單列初始化不會載入,在呼叫getInstance()方法時才進行載入,推薦使用
* @author ouyangjun
*/
public class InternalClassSingle {
private static class InternalClassSingleHolder {
private static InternalClassSingle internalClassSingle = new InternalClassSingle();
}
public InternalClassSingle getInstance() {
return InternalClassSingleHolder.internalClassSingle;
}
}
本章完結,待續!
本文說明:該文章屬於原創,如需轉載,請標明文章轉載來源
相關推薦
第一章:Java設計模式-單例模式
一、單例模式-餓漢模式 package com.xm.designpattern.single; /** * 單例模式-餓漢模式 * 原理: 不管是否使用,類載入時就初始化好 * 缺點: 非執行緒安全,只適合單執行緒使用 * @author ouyangjun
Java設計的單例模式(三種寫法)
最近在一些部落格上面看到的單例模式,無一例外都是餓漢和懶漢,這兩個確實是單例模式,但是各有自己的弊端 先上程式碼吧 //餓漢式 class ClassA{ private static final ClassA instance = new ClassA(); pub
java面試題:java中的單例設計模式及兩種實現方法的程式碼舉例
java面試時經常會問到關於單例設計模式,因為它能考察的知識點較多且在開發中經常用到。那我就來說一說我對於單例設計模式的一些淺見。首先,在Java中,什麼是單例呢?就是保證類在記憶體中只有一個物件。那麼
Java設計模式 - 單例模式
選擇 工廠方法 ech http locking 理解 多個 reg getname 本文繼續介紹23種設計模式系列之單例模式。 概念: Java中單例模式是一種常見的設計模式,單例模式的寫法有好幾種,這裏主要介紹三種:懶漢式單例、餓漢式單例、登記式單例。 單例模式有
Java枚舉enum以及應用:枚舉實現單例模式
tee configure adr 自由 這樣的 pre 單例模式 做到 build 枚舉作為一個常規的語言概念,一直到Java5才誕生不得不說有點奇怪,以至於到現在為止很多程序員仍然更喜歡用static final的形式去命名常量而不使用,一般情況下,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設計模式-單例模式、觀察者模式、工廠模式
單例設計模式 概念: 全域性只有一個例項,自行例項化物件,自行向整個系統提供這個例項。 應用場景: 需要全域性只有一個例項的時候,如儲存使用者資訊。 只有一個訪問途徑 優點: 全域性只有一個例項,避免了頻繁的建立例項,耗費的資源。 提
設計模式之單例模式(關鍵詞:設計模式/單例模式/單件模式)
設計模式 單例模式 定義 單例模式:允許一些物件中只存在 1 個例項。 類裝飾器版本 1:使用 1 個全域性字典,儲存所有類的例項。 instances = {} def getInstances(aClass, *args): if aClass not in i
java設計模式——單例模式(三)
容器單例模式 之前學習Structs2,Spring框架時,經常會聽到單例,多例。雖然這與單例模式不太一樣,但是都很類似。在程式執行的時候,就載入所有的例項,然後用的時候直接取出 看下面程式碼: /** * @program: designModel * @description: 容器單例模
JAVA設計模式-單例模式(Singleton)執行緒安全與效率
一,前言 單例模式詳細大家都已經非常熟悉了,在文章單例模式的八種寫法比較中,對單例模式的概念以及使用場景都做了很不錯的說明。請在閱讀本文之前,閱讀一下這篇文章,因為本文就是按照這篇文章中的八種單例模式進行探索的。 本文的目的是:結合文章中的八種單例模式的寫法,使用實際的示例,來演示執行緒安全和效率
設計模式(Java隨筆)—單例模式
單例模式(Singleton Pattern):5種建立型模式中的一種,有關單例模式的所有建立方法參考:Java單例模式——並非看起來那麼簡單(總結不易,感謝!),本文中,我只對開發中常用的兩種(多執行緒)方法和Java特有的列舉法進行程式碼複寫。 首先,還是貼一下單例的定
[Java] [設計模式] [ 單例模式 ]
定義 確保單例類只有一個例項,並且這個單例類提供一個函式介面讓其他類獲取到這個唯一的例項。 如果某個類,建立時需要消耗很多資源,即new出這個類的代價很大; 或者是這個類佔用很多記憶體,如果建立太多這個類例項會導致記憶體佔用太多。上述情況下就應該使用單例模式 單