国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

單例模式

gotham / 2846人閱讀

摘要:建議這個版本中的不要使用這個設計模式。相比于其他設計模式單例模式是比較容易理解的,寫法相比其他模式來說,也比較簡單。

單例模式的應用場景:

注冊表對象

日志對象

為什么要使用單例:

防止資源使用過度

程序運行結果出現不一致情況

為什么不使用全局變量,非要用單例模式呢:

全局靜態變量,在一開始程序就會進行創建,如果這個變量使用不到,消耗資源也太大,就會造成浪費

單例模式能保證返回唯一的實例,并且在使用的時候才創建

什么是單例模式:

確保一個類只有一個實例,并且提供一個全局的訪問點

錯誤寫法:
package com.singlePattern.obj;

/**
 * @program: designPattern
 * @description: 單例對象
 * @author: Mr.Yang
 * @create: 2018-11-24 21:00
 **/
public class Singleton {
    private static Singleton singleton;

    private Singleton(){}

    public static synchronized Singleton getInstance(){
        if(singleton==null){
            singleton=new Singleton();
        }
        return singleton;
    }
}
錯誤解析:

其實這樣寫是可以的,但是會影響效率。當一個實例創建之后,再次進行這個方法的調用,會進行加鎖,然后返回這個實例

優化處理-1
利用JVM在加載這個類的時候,保證先創建這個對象的實例,當調用方法的時候,直接返回。
package com.singlePattern.obj;

/**
 * @program: designPattern
 * @description: 單例對象
 * @author: Mr.Yang
 * @create: 2018-11-24 21:00
 **/
public class Singleton {
    private static Singleton singleton = new Singleton();

    private Singleton(){}

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

優化處理-2

雙重檢查加鎖
package com.singlePattern.obj;

/**
 * @program: designPattern
 * @description: 單例對象
 * @author: Mr.Yang
 * @create: 2018-11-24 21:00
 **/
public class Singleton {
   /* private static Singleton singleton = new Singleton();

    private Singleton(){}

    public static  Singleton getInstance(){
        return singleton;
    }*/

   //volatile關鍵詞保證,當singleton變量被初始化成對象實例時,多個線程正確的處理該變量
   private volatile static Singleton singleton;

   private Singleton(){}

    /**
     * 這種方式保證只有第一次創建實例的時候,才能徹底走完這個方法
     * 雙重檢查加鎖在1.4或者更早的jdva版本中,jvm對于volatile關鍵字的實現會導致雙重檢查加鎖
     * 的實現。建議這個版本中的不要使用這個設計模式。
     * @return
     */
   public static Singleton getInstance(){
       if(singleton==null){
           synchronized (Singleton.class){
               if(singleton==null){
                   singleton=new Singleton();
               }
           }
       }
       return singleton;
   }
}
相比于其他設計模式:

單例模式是比較容易理解的,寫法相比其他模式來說,也比較簡單。

關注JAVA知識分享與總結公眾號,獲取更多!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72453.html

相關文章

  • Android中的設計模式單例模式

    摘要:總結單例是運用頻率很高的模式,因為客戶端沒有高并發的情況,選擇哪種方式并不會有太大的影響,出于效率考慮,推薦使用和靜態內部類實現單例模式。 單例模式介紹 單例模式是應用最廣的模式之一,也可能是很多人唯一會使用的設計模式。在應用單例模式時,單例對象的類必須保證只用一個實例存在。許多時候整個系統只需要一個全局對象,這樣有利于我么能協調整個系統整體的行為。 單例模式的使用場景 確保某個類有且...

    yzd 評論0 收藏0
  • JavaScript設計模式----單例模式

    摘要:不符合設計模式中的單一職責的概念。引入代理實現單例模式引入代理實現單例模式的特點我們負責管理單例的邏輯移到了代理類中。的單例模式對比在以上的代碼中實現的單例模式都混入了傳統面向對象語言的特點。 聲明:這個系列為閱讀《JavaScript設計模式與開發實踐》 ----曾探@著一書的讀書筆記 1.單例模式的特點和定義 保證一個類僅有一個實例,并且提供一個訪問它的全局訪問點。 2.傳統面向對...

    selfimpr 評論0 收藏0
  • Java設計模式-單例模式(Singleton Pattern)

    摘要:如果需要防范這種攻擊,請修改構造函數,使其在被要求創建第二個實例時拋出異常。單例模式與單一職責原則有沖突。源碼地址參考文獻設計模式之禪 定義 單例模式是一個比較簡單的模式,其定義如下: 保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。 或者 Ensure a class has only one instance, and provide a global point of ac...

    k00baa 評論0 收藏0
  • Java 設計模式單例模式

    摘要:在設計模式一書中,將單例模式稱作單件模式。通過關鍵字,來保證不會同時有兩個線程進入該方法的實例對象改善多線程問題為了符合大多數程序,很明顯地,我們需要確保單例模式能在多線程的情況下正常工作。 在《Head First 設計模式》一書中,將單例模式稱作單件模式。這里為了適應大環境,把它稱之為大家更熟悉的單例模式。 一、了解單例模式 1.1 什么是單例模式 單例模式確保一個類只有一個實例,...

    everfight 評論0 收藏0

發表評論

0條評論

gotham

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<