内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Android設計模式之單例模式詳解

單例模式

公司主營業(yè)務:成都網(wǎng)站設計、網(wǎng)站制作、外貿(mào)營銷網(wǎng)站建設、移動網(wǎng)站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出靖西免費做網(wǎng)站回饋大家。

一個類只有一個實例,并且可以全局訪問使用

應用場景

如賬戶管理類,數(shù)據(jù)庫操作類等(某個對象頻繁被訪問使用)

常用方式

餓漢式
懶漢式
同步加鎖
DCL雙重加鎖驗證
靜態(tài)內(nèi)部類
枚舉單例
餓漢式

加載類的同時立即進行初始化操作,對資源消耗很大

public class SingleTest {
  public static final SingleTest singleTest1=new SingleTest();

  public SingleTest() {
  }
  public static SingleTest getSingleTest1(){

    return singleTest1;
  }
}

懶漢式

優(yōu)點:需要使用時候才進行初始化加載

缺點:線程不安全,在多線程中很容易出現(xiàn)不同步的情況

public class SingleTest1 {


  private static SingleTest1 instance=null;

  public SingleTest1() {
  }
  public static SingleTest1 getInstance(){
    if(instance==null){
      instance=new SingleTest1();
    }
    return instance;
  }
}

同步加鎖

優(yōu)點:解決線程安全問題

缺點:每次實例需要判斷加鎖狀態(tài),效率低下

public class SingleTest2 {

  private static SingleTest2 instance=null;

  public SingleTest2() {
  }
  public static synchronized SingleTest2 getInstance(){
    if(instance==null){
      instance=new SingleTest2();
    }
    return instance;
  }
}

DCL雙重校驗

優(yōu)點:并發(fā)不高的情況下可以完美運行(推薦使用,客戶端幾乎不存在高并發(fā)情況)

缺點:JDK1.5以前可能會出現(xiàn)instance為初始化的問題(現(xiàn)在的Android幾乎都是1.7 1.8了幾乎可以略率此問題)

public class SingleTest4 {
  private static SingleTest4 instance=null;//靜態(tài)變量
  public SingleTest4() {
  }
  public static SingleTest4 getInstance(){
    if (instance == null) {//第一層校驗
      synchronized (SingleTest4.class) {
        if (instance == null) {//第二層校驗
          instance = new SingleTest4();
        }
      }
    }
    return instance;
  }
}

靜態(tài)內(nèi)部類

優(yōu)點:延遲加載,線程安全,內(nèi)存消耗少(推薦使用)

public class SingleTest5 {
  private SingleTest5() {
  }

  public static final SingleTest5 getInstance() {
    return SingletonHolder.INSTANCE;
  }

  //定義的靜態(tài)內(nèi)部類
  private static class SingletonHolder {
    private static final SingleTest5 INSTANCE = new SingleTest5(); //創(chuàng)建實例的地方
  }
}

枚舉單例

優(yōu)點:線程安全,防反序列化,防反射,寫法簡單

public enum SingleTest6 {
  //第一種方式
//  INSTANCE;
//  private CaiPiao instance;
//
//  SingleTest6() {
//    instance = new CaiPiao();
//  }
//
//  public CaiPiao getInstance() {
//    return instance;
//  }
//
//  class CaiPiao {
//
//  }


//第二種方式
  INSTANCE2{
    @Override
    protected void CaiPiao() {
      System.out.println("彩票");
    }

  };
  protected abstract void CaiPiao();
}

github代碼地址

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)頁題目:Android設計模式之單例模式詳解
當前路徑:http://www.rwnh.cn/article36/pgcdsg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管、商城網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站維護、網(wǎng)站內(nèi)鏈、App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網(wǎng)站建設
平定县| 晋江市| 正安县| 遂昌县| 九江县| 琼海市| 时尚| 彭州市| 湖北省| 永新县| 五寨县| 闵行区| 盐山县| 林西县| 云安县| 望城县| 任丘市| 天水市| 临泽县| 荥阳市| 陇南市| 静海县| 团风县| 辽源市| 长沙县| 南平市| 微山县| 新河县| 漯河市| 建宁县| 南部县| 商河县| 长治县| 朝阳县| 锡林郭勒盟| 桦甸市| 得荣县| 郯城县| 灵山县| 儋州市| 安康市|