理解JAVA中的單例模式 --->花1分鐘看看

來源:互聯網
上載者:User
                                理解JAVA中的單例模式  

歡迎加入我的qq群1543150073獲得更多加瓦和職場資訊。我幫你。

單例模式簡單說就是:同一個對象,不用去new多個對象。減少記憶體消耗。

       &於JAVA中的設計模式,看到介紹的大概有23種設計模式之多。象原廠模式,Factory 方法模式,單例模式,外觀(Facade)模式,觀察者Observer模式,橋接(Bridge)模式都是比較常用的,不同的項目有不同的設計方向,可以參考的設計模式也不盡相同,沒有定數,只是上面這幾個模式用的比較多一些.cade)模式,觀察者Observer模
    設計模式的好處,就是提供了一種通用的解決問題的好方法,減少重複勞動,提高開發效率。
    下面,阿堂今天就來說說其中的“單例模式”,其實,它在實際項目的開發中,它還是用得較多的   &
單例模式,就是在整個應用程式啟動並執行過程中,使用單例模式的類只需要執行個體化一次(new一次),始終是同一個對象(執行個體),這樣就減少了記憶體的開銷,提高了開發效率,象一般的公用類,如讀取一個設定檔的類,一個包含程式中其它類要調用所有公用見常量的類,等等,我們都可以定義一個“單例模式”的類,下面阿堂就來舉個例來測試一下,相信,朋友們看到阿堂下面所舉的例和總結,應該就清楚了。

到介紹的大概有23種設計模式之多。象工廠代碼如下

nbsp;對於JAVA中的設計模式,看//下面是一個單例模式的類
public class MySingleton
{ 到介紹的大概有23種設計模式之多。象工廠

    privatestatic final MySingleton INSTANCE=  new MySingleton();

    privateMySingleton()cade)模式,觀察者Observer模
    {

    }

    publicstatic 到介紹的大概有23種設計模式之多。象工廠final MySingleton getInstance(){

     return INSTANCE;

    }   &
}

//下面一個不是單例模式的類cade)模式,觀察者Observer模
public class NoSingleton
{
 public NoSingleton()模式,Factory 方法模式,單例模式,外觀(Fa
 {} 
 private int id;
 private String name;模式,Factory 方法模式,單例模式,外觀(Fa
 public int getId() {
  return id;
 }cade)模式,觀察者Observer模
 public void setId(int id) {
  this.id = id;
 }cade)模式,觀察者Observer模
 public String getName() {
  return name;
 }到介紹的大概有23種設計模式之多。象工廠
 public void setName(String name) {
  this.name = name;
 } nbsp;對於JAVA中的設計模式,看

......

}

到介紹的大概有23種設計模式之多。象工廠
測試類別 到介紹的大概有23種設計模式之多。象工廠

public class TestSingleton
{

nbsp;對於JAVA中的設計模式,看 //Date200810301627
 //authtor 網路時空
 cade)模式,觀察者Observer模
 public static void main(String[] args)
 {
模式,Factory 方法模式,單例模式,外觀(Fa  System.out.println("========================================");    
  System.out.println("下面是使用單例模式,來調用類的執行個體");
  System.out.println("========================================");  nbsp;對於JAVA中的設計模式,看
  for(inti=0;i<6;i++)
  { 

    intm=i+1;到介紹的大概有23種設計模式之多。象工廠
   System.out.println("第 "+m+" 次"+"得到的對象值為"+MySingleton.getInstance());
  }
cade)模式,觀察者Observer模  System.out.println("========================================");   
  System.out.println("下面是不使用單例模式,來調用類的執行個體");
  System.out.println("========================================");  nbsp;對於JAVA中的設計模式,看
  for(inti=0;i<6;i++)
  {
       int n=i+1;模式,Factory 方法模式,單例模式,外觀(Fa
       NoSingleton noSingletion=new NoSingleton();
       System.out.println("第 "+n+" 次"+"得到的對象值為"+noSingletion);
  }到介紹的大概有23種設計模式之多。象工廠
 }
}

nbsp;對於JAVA中的設計模式,看
測試結果:

cade)模式,觀察者Observer模花1分鐘看看">

 

  nbsp;對於JAVA中的設計模式,看

根據結果,阿堂總結如下

到介紹的大概有23種設計模式之多。象工廠1.通過單例模式設計的類MySingleton,定義了一個private的構造方法,一個staticfinal類型的常量INSTANCE,其值就是返回一個MySingleton的執行個體,然後再定義一個getInstance()的靜態方法來返回一個INSTANCE,而這個值就是一個不變的執行個體或值,也就是第一次newMySingleton()產生的對象,所以測試類別中,迴圈6次中,我們列印得到的始終是同一個對象,這就充分驗正了,單例模式,只new了一次(執行個體化了一次),減少了在堆中開闢記憶體空間的開銷 nbsp;對於JAVA中的設計模式,看

   &2.沒有用單例模式的類,我們在測試類別中,迴圈6次中,我們列印得到的始終是不同對象,這就說,我們在堆記憶體中new了六次,產生了6個對象,很顯示,這是需要佔用記憶體資源,影響運行效率的

nbsp;對於JAVA中的設計模式,看3.對於上單例模式的類中,在測試中,阿堂去掉了final終態類型的限制,迴圈6次中,我們列印得到的始終是同一個對象,這裡說明了final在此處可有可無,那為什麼還要加上final呢。

nbsp;對於JAVA中的設計模式,看這裡使用final是為了更安全,保證你這個類的其他方法、其他代碼不能對

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.