1. 程式人生 > >面試題2:實現Singleton

面試題2:實現Singleton

餓漢式

public class Singleton {   

    private Singleton(){}

    private static final Singleton INSTANCE = new Singleton();;

    public static Singleton getInstance() {              
         return INSTANCE;
    }    
} 

懶漢式之一 : double check lock

public class Singleton {   

    private Singleton
(){} private static Singleton instance; public static Singleton getInstance() { if(instance==null){ //step1 synchronized (Singleton.class) { if(instance==null){ //step2 instance = new Singleton(); } } } return
instance; } }

懶漢式之二 : 內部類實現,其實也有餓漢式的影子

public class Singleton {   

    private Singleton() {}

    private static class InnerSingleton{ 
       private static final Singleton INSTANCE = new Singleton();    
    }    

    public static final Singleton getInstance() {      
        return
InnerSingleton.INSTANCE; } }

相關推薦

試題2實現Singleton模式

題目:設計一個類,我們只能生成該類的一個例項 思路: 1)不能開發類的構造方法,不然誰都可以通過構造方法搭建,所以將構造方法私有化; 2)建立一個靜態例項,根據需要建立一個例項,但也要將該例項私有化,防止外部獲取該例項時例項還未建立; 3)建立一個方法獲取2中的靜態例

【劍指offer】試題2實現 Singleton 模式

本文目錄: 懶漢式和餓漢式 解法1:只適用於單執行緒環境 (不好) 解法2:雖然在多執行緒環境中能工作,但是效率不高 (不好) 解法3:加同步鎖前後兩次判斷例項是否存在  (可行) 解法4:利用類靜態變數初始化一個例項  (推薦使用) 解法5:靜態內部類實

【劍指Offer學習】【試題2 實現Singleton 模式——七種實現方式】

題目:設計一個類,我們只能生成該類的一個例項 public class Test02 { /** * 單例模式,餓漢式,執行緒安全 */ public static class Singleton { privat

試題2實現Singleton

餓漢式 public class Singleton { private Singleton(){} private static final Singleton INSTANCE = new Singleton();; p

【劍指offer Java】試題2實現Singleton模式

題目:設計一個類,我們只能生成該類的一個例項。 //餓漢式 public static class Singleton01{ //預先初始化static變數 private final static Singleton01

c++試題2虛擬函式是如何實現的?

虛擬函式是通過一張虛擬函式表實現的,有多少個虛擬函式,就有多少個指標;在這個表中,主要是一個類的虛擬函式的地址表,這張表解決了繼承、覆蓋的問題;實際上在編譯的時候,編譯器會自動加上虛表虛擬函式的作用實現動態聯編,也就是說在程式執行階段動態的選擇合適的成員函式,在定義了虛擬函式之後,可以在基類的派生類中對虛擬函

Java《劍指Offer》試題2替換空格

替換空格 題目描述:請實現一個函式,將一個字串中的每個空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。 思路:建立StringBuffer物件,然後將StringBuffer物件轉成字串物件,接著呼叫字串物件的replace方法,將空格

試題2 怎樣實現元素互換

怎樣實現元素互換 1.題述 從鍵盤上輸入10個整數,並將其放入一個一維陣列中,然後將其前5個元素與後5個元素對換, 即:第1個元素與第10個元素互換,第2個元素與第9個元素互換…第5個元素與第6個元素互換。 分別輸出陣列原來各元素的值和對換後各元素的值。

JAVA試題2什麼是面向物件?

面向物件是一種思想,世間萬物都可以看做一個物件,這裡只討論面向物件程式設計(OOP),Java是一個支援併發、基於類和麵向物件的計算機程式語言,面向物件軟體開發的優點: 程式碼開發模組化,更易維護和修改; 程式碼複用性強; 增強程式碼的可靠性和靈活性; 增加程式碼的可讀性。 面向物件的四大基本特

試題2程序間常用的通訊方式有哪些?

程序間通訊(IPC,InterProcess Communication)是指在不同程序之間傳播或交換資訊。 IPC的方式通常有管道(包括無名管道和命名管道)、訊息佇列、訊號量、共享儲存、Socket、Streams等。其中 Socket和Streams支援不同主機上的兩個

經典C語言試題2static關鍵字的用法?

C語言中static關鍵字的用法主要有以下三種:1、在函式體內,static變數的作用範圍為該函式體,該變數的記憶體只能被分配一次,下次呼叫時維持上次的值(即具有記憶功能)。2、在模組內的static全域性變數可以被模組內的所有函式訪問,但是不能被模組外的函式訪問(注:即使在

試題1實現今年倒計時功能

文章轉載:https://blog.csdn.net/lxcao/article/details/60326503在網頁中實現一個計算當年還剩多少時間的倒數計時程式,要求網頁上實時動態顯示”XX年還剩XX天XX時XX分XX秒”<!DOCTYPEHTML> <

試題實現兩個執行緒交替列印數字

public class Solution1 { private static Object lock = new Object(); private static int i = 1; public static void main(String[] args)

【劍指offer】試題 2. 實現 Singleton模式

模式 試題 枚舉 生成 test hand true 方法 單例模式 面試題 2. 實現 Singleton模式 題目:設計一個類,我們只能生成該類的一個實例。 單例模式:確保一個類只有一個實例,並提供了一個全局訪問點。 Code 1.餓漢模式 //餓漢模式 publ

劍指offer 試題2 Singleton模式 C++實現

題目:實現Singleton模式 ​ 以下內容是我在看《劍指offer》的面試題2時,遇到的問題,因為書中使用C#實現,所以想用C++重新實現一下,Test方法不夠全,後續還要完善。C++實現過程主要參考:C++設計模式——單例模式。 ​

劍指offer試題2)——實現Singleton模式

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

試題小記1、統計字符串出現的次數,2、約瑟夫環問題

lse UNC aaa ret nal 約瑟夫環問題 b2c else 用法 今天面到了一個比較有意思的筆試題,先記錄一下:1.字符串類似‘aaabbccddd’,寫個方法得出‘3a2b2c3d‘,即統計字符串出現的個數$arr = str_split(‘aaabbccdd

《劍指offer》試題9用兩個棧實現佇列

題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式appendTail 和deleteHead ,分別完成在佇列尾部插入節點和在佇列頭部刪除節點的功能。 template <typename T> class CQueue { public: CQueue(vo

劍指offer試題2

面試題2:實現Singleton模式 編譯器:python3.5.2 程式設計環境:pycharm2018.1.2x64 方法一、__new__方法來實現單例模式 用__new__方法實現的單例模式,比如下面的MyClass類,會對類的初始化有影響嗎?會對類的例項方法