編寫一個單例類
在面試的時候,單例模式是經常被提問到的,編寫一個Singleton類,可以更好的向面試官展現出自己對單例模式的理解。下面我列舉出四個方式在展示Singleton類
1.簡單的方式,但這個有一個缺點,那就是在併發執行時,可能存在多個例項。
1 public class SingletonDemo1 { 2 private static SingletonDemo1 INSTANCE; 3 private SingletonDemo1(){ 4 5 } 6 public static SingletonDemo1 getInstance(){7 if(INSTANCE==null){ 8 INSTANCE = new SingletonDemo1(); 9 } 10 return INSTANCE; 11 } 12 }
2.公共域的方式,特點就是簡單,缺點就是做不到在返回的過程中做額外的邏輯處理,所以引申出可以用工廠來展示單例模式。
1 public class SingletonDemo2 { 2 public static final SingletonDemo2 INSTANCE = new SingletonDemo2();3 private SingletonDemo2(){ 4 5 } 6 7 }
3.工廠化方式,特點是可以在例項過程中新增邏輯。
1 public class SingletonDemo3 { 2 public static final SingletonDemo3 INSTANCE = new SingletonDemo3(); 3 private SingletonDemo3(){ 4 5 } 6 public static SingletonDemo3 getInstance(){7 return INSTANCE; 8 } 9 10 }
4.列舉方式,最佳實踐,推薦使用,並且他不會存在多個例項化的問題以及反序列化的問題。
1 public enum SingletonDemo4 { 2 INSTANCE; 3 4 public static void saySomthing(String str){ 5 System.out.println("hello"+str); 6 } 7 }
Main方法測試:
1 public class Main { 2 3 public static void main(String[] args) { 4 // TODO Auto-generated method stub 5 System.out.println("SingletonDemo1"+SingletonDemo1.getInstance()); 6 System.out.println("SingletonDemo1"+SingletonDemo1.getInstance()); 7 8 System.out.println("SingletonDemo2"+SingletonDemo2.INSTANCE); 9 System.out.println("SingletonDemo2"+SingletonDemo2.INSTANCE); 10 11 System.out.println("SingletonDemo3"+SingletonDemo3.getInstance()); 12 System.out.println("SingletonDemo3"+SingletonDemo3.getInstance()); 13 14 System.out.println("SingletonDemo4"+SingletonDemo4.INSTANCE); 15 System.out.println("SingletonDemo4"+SingletonDemo4.INSTANCE); 16 17 SingletonDemo4.INSTANCE.saySomthing("SingletonDemo4"); 18 } 19 20 }
測試結果輸出:通過執行結果可以看到,每個用例都被例項化一次,這就是單例模式的精髓:全域性資源共享。
相關推薦
編寫一個單例類
在面試的時候,單例模式是經常被提問到的,編寫一個Singleton類,可以更好的向面試官展現出自己對單例模式的理解。下面我列舉出四個方式在展示Singleton類 1.簡單的方式,但這個有一個缺點,那就是在併發執行時,可能存在多個例項。 1 public clas
php實現單例類工廠--傳遞同一個類名只產生僅僅一個物件
單例類工廠 用來傳遞類,併產生相應的單例物件,但是物件需要引入這個ModelFacetory類檔案以及通過ModelFacetory::M(類名)這種方式來直接例項化 獲得物件. class ModelFactory{ static $class_instance=array();  
單例類(Singleton)一個類始終只能建立一個例項
單例類(Singleton)一個類始終只能建立一個例項 構造器使用private修飾、;提供一個public方法作為該類的訪問點,該方法必須使用static修飾來作為類成員;使用一個成員變數快取已經建
寫一個單例的類
就是寫一個例項化一次的類 即把構造私有化,外部無法例項化他。通過呼叫他的靜態方法,判斷是否例項化了,未例項化則例項化並返回,已例項化則返回已例項化的。 一: /** * 基於雙重檢查鎖定的單例模式 * @author zongzhimin *
單例類的總結
單例 防止 懶漢 new str pub 兩種 test rgs /** * 單例類的兩種方法。 * 1.餓漢式 * 當類一加載就開始創建對象 * 2.懶漢式 * 當需要使用到類的對象是調用類的類方法才開始創建對象,想比較上面而言是 * 懶漢式。 * 註意,單例類的特點:
java 核心學習筆記(四) 單例類
com null tools 初始化 equal inf div 特殊 對象 如果一個類始終只能創建一個實例,那麽這個類被稱作單例類。 一些特殊的應用場景可能會用到,為了保證只能創建一個實例,需要將構造方法用private修飾,不允許在類之外的其它地方創建類的實例。 又要保
定義一個單例設計Singleton
使用方法 urn print 單例 void hello ins system 私有 class Singleton{ private static Singleton instance;//內部實例化對象 public static Singleto
練習創建一個單例模式例子
eve jpg closed div 使用 htm stop http pla 昨天有寫過一個單例模式的練習。《單例模式(C#)》 寫得較為復雜,今天再使用另外的方法來實現: class Au { private static
java單例類
創建 singleton new 初始 light 構造 args ret println public class SingleTonDemo { public static void main(String[] args) { SingleTon.getSin
題二:寫一個單例模式
餓漢 ret gets col ets int ati sta println /** * 2、寫一個單例模式 */ public class Test2 { public static void main(String[] args) {
C++單例類設計模式的思考
變量初始化 平時 單例 nag 綜合 工廠 設計模式的 使用方法 第一個 本次博文假設有一個Manager管理類,並以此為探究單例類的設計模式。 一般作法 類聲明: class Manager{ public: ~Manager(); //提供單例對象訪問 sta
單例類模板(五十一)
單例模式 單例類模板 設計模式 抽象類模板 在有些時候,我們在進行架構設計時,某些類在整個系統生命期中最多只能有一個對象存在(Single Instance)。比如在超市的收銀系統,一個掃描機就對應一個,每個屏幕也會對應一個,基於這種情況,我們就提出了單例模式。那麽問題就來了:
java單例類的幾種實現
nta span 安全 let 實例化 註意 style 獲取 單例類 一,最簡單的方式 public class Singleton{ private Singleton(){}; private static Singleton instanc
python單例類
init one div __new__ urn sel 有一個 spa turn class Single: __ISINCTANCE = None def __new__(cls, *args, **kwargs): if not cl
單例類
get col tin string ont null println int 實例 如果一個類始終只能創建一個實例, 1 class Singleton { 2 public static Singleton instance; 3 priva
一個單例模式的實現
歡迎大家點評,這是個人寫的一個單例模板 #pragma once //單例模板 #include <windows.h> class CrsLock { public: CrsLock(){ InitializeCriticalSection(&m_cr
Java併發程式設計中的設計模式解析(二)一個單例的七種寫法
Java單例模式是最常見的設計模式之一,廣泛應用於各種框架、中介軟體和應用開發中。單例模式實現起來比較簡單,基本是每個Java工程師都能信手拈來的,本文將結合多執行緒、類的載入等知識,系統地介紹一下單例模式的演變,並體現在7種不同的單例設計中。說到這個,非常像孔乙己裡那個“回字有四種寫法”的梗,不過與封建迂腐
繼承MonoBehaviour的單例類
1、MonoSingleton using UnityEngine; public abstract class MonoSingleton<T> : MonoBehaviour where T : MonoBehaviour { public bool glo
C++筆記 第六十二課 單例類模板---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第六十二課 單例類模板 1.單例模式 需求的提出 在構造設計時,某些類在整個系統生命期中最多隻能有一個物件存在(Single Instance). 2.問題 如何定義
java day25 多執行緒(下) 單例類(Runtime,Timer
25.01_多執行緒(單例設計模式)(掌握) 單例設計模式:保證類在記憶體中只有一個物件。 如何保證類在記憶體中只有一個物件呢? (1)控制類的建立,不讓其他類來建立本類的物件。private (2)在本類中定義一個本類的物件。Singl