最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 單例模式(餓漢模式與懶漢模式)

 更新時間:2017年09月05日 11:15:37   作者:lfdfhl  
這篇文章主要介紹了java 單例模式(餓漢模式與懶漢模式)的相關(guān)資料,希望通過本文大家能掌握這部分內(nèi)容,需要的朋友可以參考下

java 單例模式

餓漢式單例

對于餓漢模式,我們可這樣理解:該單例類非常餓,迫切需要吃東西,所以它在類加載的時候就立即創(chuàng)建對象。

懶漢式單例類

對于懶漢模式,我們可以這樣理解:該單例類非常懶,只有在自身需要的時候才會行動,從來不知道及早做好準(zhǔn)備。它在需要對象的時候,才判斷是否已有對象,如果沒有就立即創(chuàng)建一個對象,然后返回,如果已有對象就不再創(chuàng)建,立即返回。

單例設(shè)計模式常用于JDBC鏈接數(shù)據(jù)庫

注意:

1 我們常用的是第一種餓漢式,因為:

 (1)既然采用了單例設(shè)計模式,就是為了使用單例類的對象,所以就先把他實例化出來.

 (2)在懶漢式中存在一定的安全隱患,需要加上同步關(guān)鍵字synchronized,否則就談不上單例了,但是加上了synchronized效率就稍遜了

2 在第一種辦法中,代碼private static final Single SINGLE=new Single();為什么有final呢?

因為被final關(guān)鍵字修飾的類,不能被繼承,被final修飾的成員變量不可以被修改.

此處用了final為了強化和重點突出:"同一對象"這個概念——只有這么一個對象,而且它是不可以被修改的.

如果不用final修飾 Single SINGLE那么就會有這么一種情況:業(yè)務(wù)很復(fù)雜,在不經(jīng)意間就修改了此對象,造成各種錯誤.

第一種(餓漢式):

思路:

(1)不讓其他類建立該類的對象.即將構(gòu)造函數(shù)設(shè)置為私有!
(2)自定義一個本類對象
(3)將自定義的對象提供出去.即定義一個get方法,返回值為此類的對象。

 分析:

 第一步:將單例類中構(gòu)造函數(shù)私有化了且利用一個get()函數(shù)向外提供此類的對象,所以其他類無法構(gòu)造此類的對象。
 第二步:但其他類要想調(diào)用此單例類里的方法,于是只有采用內(nèi)名.方法名()來實現(xiàn),這就要求這個方法必須是靜態(tài)static的。
 第三步:又因為靜態(tài)方法只能訪問靜態(tài)成員!所以要將SINGLE設(shè)置為靜態(tài)的

public class SingleDemo { 
  public static void main(String[] args) { 
     Single s1=Single.getSingle(); 
     s1.setNumber(44); 
     Single s2=Single.getSingle(); 
     s2.setNumber(55); 
     System.out.println("s1.number="+s1.number); 
     System.out.println("s2.number="+s2.number); 
     if(s1.equals(s2)){ 
        System.out.println("s1與s2是同一對象即:s1==s2");//if條件成立 
       } 
   } 
} 
 
 
class Single{ 
  int number; 
  public int getNumber() { 
       return number; 
     } 
  public void setNumber(int number) { 
       this.number = number; 
     } 
  private Single(){};//第一步 
  private static final Single SINGLE=new Single();//第三步 
  public static Single getSingle(){//第一步和第二步 
       return SINGLE; 
  } 
} 

第二種(懶漢式):

package cn.com; 
public class SingleDemo2 { 
   public static void main(String[] args) { 
      Single s1=Single.getSingle(); 
      s1.setNumber(44); 
      Single s2=Single.getSingle(); 
      s2.setNumber(55); 
      System.out.println("s1.number="+s1.number); 
      System.out.println("s2.number="+s2.number); 
      if(s1.equals(s2)){ 
        System.out.println("s1與s2是同一對象即:s1==s2");//if條件成立 
       } 
     } 
 
 
} 
 
 
class Single{ 
   int number; 
   public int getNumber() { 
       return number; 
     } 
   public void setNumber(int number) { 
       this.number = number; 
     } 
   private Single(){}; 
   private static Single SINGLE=null; 
   public static synchronized Single getSingle(){//多線程時加上synchronized是關(guān)鍵!?。?
      if(SINGLE==null){ 
         SINGLE=new Single(); 
         return SINGLE; 
       } 
      else{ 
         return SINGLE; 
        } 
   } 
} 


以上就是對java 單例設(shè)計模式的詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • ASP.NET在MVC中MaxLength特性設(shè)置無效的解決方法

    ASP.NET在MVC中MaxLength特性設(shè)置無效的解決方法

    這篇文章主要介紹了ASP.NET在MVC中MaxLength特性設(shè)置無效的解決方法,涉及對MVC中表單元素屬性的應(yīng)用技巧,需要的朋友可以參考下
    2014-11-11
  • 先裝VS再裝IIS時出錯的解決方法

    先裝VS再裝IIS時出錯的解決方法

    如果先安裝了VS再安裝IIS,一般都會出錯,不能正常使用,原因是什么呢?我查了下資料,收集下,供有需要的兄弟們看下
    2009-12-12
  • 從ASP.NET Core3.1遷移到5.0的方法

    從ASP.NET Core3.1遷移到5.0的方法

    這篇文章主要介紹了從ASP.NET Core3.1遷移到5.0的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • ASP.NET簡化編輯界面解決思路及實現(xiàn)代碼

    ASP.NET簡化編輯界面解決思路及實現(xiàn)代碼

    簡化用戶操作界面,添加功能一般沒法簡化,但是如果是在GridView做顯示,編輯,更新與刪除,會讓用戶在編輯,需要點擊編輯銨鈕,再進(jìn)行編輯,或是取消編輯,下面是改進(jìn)的方法做了演示動畫,感興趣的朋友可以了解下
    2013-01-01
  • asp.net core新特性之TagHelper標(biāo)簽助手

    asp.net core新特性之TagHelper標(biāo)簽助手

    這篇文章主要為大家詳細(xì)介紹了asp.net core新特性之TagHelper標(biāo)簽助手的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • asp.net 源碼保存 用程序分頁

    asp.net 源碼保存 用程序分頁

    asp.net 源碼保存 用程序分頁實現(xiàn)代碼。
    2010-06-06
  • 詳解ASP.NET頁面生命周期事件

    詳解ASP.NET頁面生命周期事件

    這篇文章介紹了ASP.NET頁面生命周期事件,有需要的朋友可以參考一下
    2013-07-07
  • asp.net core分塊上傳文件示例

    asp.net core分塊上傳文件示例

    這篇文章主要介紹了asp.net core分塊上傳文件示例,這里整理了詳細(xì)的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • 一步步打造簡單的MVC電商網(wǎng)站BooksStore(4)

    一步步打造簡單的MVC電商網(wǎng)站BooksStore(4)

    這篇文章主要和大家一起一步步打造一個簡單的MVC電商網(wǎng)站,MVC電商網(wǎng)站BooksStore第四篇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • asp.net MVC分頁代碼分享

    asp.net MVC分頁代碼分享

    這篇文章主要為大家詳細(xì)介紹了asp.net MVC分頁代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09

最新評論

慈溪市| 大安市| 马尔康县| 南皮县| 贞丰县| 胶南市| 石泉县| 白城市| 宁海县| 民丰县| 宁强县| 九龙县| 北海市| 九寨沟县| 宣汉县| 苏州市| 乐陵市| 揭阳市| 新晃| 贵定县| 孙吴县| 海原县| 永兴县| 定西市| 岳阳市| 若尔盖县| 大宁县| 通城县| 河东区| 寻乌县| 酒泉市| 永春县| 茶陵县| 宁陵县| 城固县| 曲麻莱县| 英超| 仲巴县| 南华县| 松原市| 大渡口区|