熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

Java程序性能優化-單例模式(1)

2013-11-23 20:01:43  來源: Java高級技術 

    單例模式(

  單例模式是設計模式中使用最為普遍的模式之一它是一種對象創建模式用於產生一個對象的具體實例它可以確保系統中一個類只產生一個實例在Java語言中這樣的行為能帶來兩大好處

  ()對於頻繁使用的對象可以省略創建對象所花費的時間這對於那些重量級對象而言是非常可觀的一筆系統開銷

  ()由於new操作的次數減少因而對系統內存的使用頻率也會降低這將減輕GC壓力縮短GC停頓時間

  因此對於系統的關鍵組件和被頻繁使用的對象使用單例模式便可以有效地改善系統的性能

  單例模式的參與者非常簡單只有單例類和使用者兩個如表所示

  表  單例模式角色

  它的基本結構如圖所示

  圖  單例模式類圖

  單例模式的核心在於通過一個接口返回唯一的對象實例一個簡單的單例實現如下

  public class Singleton {

  private Singleton(){

  Systemoutprintln(Singleton is create //創建單例的過程可能會比較慢

  }

  private static Singleton instance = new Singleton()

  public static Singleton getInstance() {

  return instance;

  }

  }

  注意代碼中的重點標注部分首先單例類必須要有一個private訪問級別的構造函數只有這樣才能確保單例不會在系統中的其他代碼內被實例化這點是相當重要的其次instance成員變量和getInstance()方法必須是static的

  注意單例模式是非常常用的一種結構幾乎所有的系統中都可以找到它的身影因此希望讀者可以通過本節了解單例模式的幾種實現方式及其各自的特點

  這種單例的實現方式非常簡單而且十分可靠它唯一的不足僅是無法對instance實例做延遲加載假如單例的創建過程很慢而由於instance成員變量是static定義的因此在JVM加載單例類時單例對象就會被建立如果此時這個單例類在系統中還扮演其他角色那麼在任何使用這個單例類的地方都會初始化這個單例變量而不管是否會被用到比如單例類作為String工廠用於創建一些字符串(該類既用於創建單例Singleton又用於創建String對象)

  public class Singleton {

  private Singleton() {

  Systemoutprintln(Singleton is create

  //創建單例的過程可能會比較慢

  }

  private static Singleton instance = new Singleton()

  public static Singleton getInstance() {

  return instance;

  }

  public static void createString(){      //這是模擬單例類扮演其他角色

  Systemoutprintln(createString in Singleton

  }

  }

       返回目錄Java程序性能優化讓你的Java程序更快更穩定

  編輯推薦

       Java程序設計培訓視頻教程

       JEE高級框架實戰培訓視頻教程

       JME移動開發實戰教學視頻

  Visual C++音頻/視頻技術開發與實戰

  Oracle索引技術

  ORACLEG數據庫開發優化指南


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27837.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.