真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android設(shè)計(jì)模式之單例模式詳解

單例模式

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

一個(gè)類只有一個(gè)實(shí)例,并且可以全局訪問使用

應(yīng)用場(chǎng)景

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

常用方式

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

加載類的同時(shí)立即進(jìn)行初始化操作,對(duì)資源消耗很大

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

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

    return singleTest1;
  }
}

懶漢式

優(yōu)點(diǎn):需要使用時(shí)候才進(jìn)行初始化加載

缺點(diǎn):線程不安全,在多線程中很容易出現(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)點(diǎn):解決線程安全問題

缺點(diǎn):每次實(shí)例需要判斷加鎖狀態(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àn)

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

缺點(diǎn):JDK1.5以前可能會(huì)出現(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) {//第一層校驗(yàn)
      synchronized (SingleTest4.class) {
        if (instance == null) {//第二層校驗(yàn)
          instance = new SingleTest4();
        }
      }
    }
    return instance;
  }
}

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

優(yōu)點(diǎn):延遲加載,線程安全,內(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)建實(shí)例的地方
  }
}

枚舉單例

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

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代碼地址

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


名稱欄目:Android設(shè)計(jì)模式之單例模式詳解
URL標(biāo)題:http://weahome.cn/article/pgcdsg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部