定義:
 Singleton模式主要作用是保證在Java應用程序中,一個類Class只有一個實例存在。

 在很多操作中,比如建立目錄,數據庫連接都需要這樣的單線程操作。

 還有, singleton能夠被狀態化; 這樣,多個單態類在一起就可以作為一個狀態倉庫一樣向外提供服務,比如,你要論壇中的帖子計數器,每次瀏覽一次需要計數,單態類能否保持住這個計數,并且能synchronize的安全自動加1,如果你要把這個數字永久保存到數據庫,你可以在不修改單態接口的情況下方便的做到。

 另外方面,Singleton也能夠被無狀態化。提供工具性質的功能,

 Singleton模式就為我們提供了這樣實現的可能。使用Singleton的好處還在于可以節省內存,因為它限制了實例的個數,有利于Java垃圾回收(garbage collection)。

 我們常常看到工廠模式中類裝入器(class loader)中也用Singleton模式實現的,因為被裝入的類實際也屬于資源。

 具體實施:
 用靜態方法實現 Singleton

這種方法是使用靜態方法來監視實例的創建.為了防止創建一個以上的實例,我們最好把構造器聲明為 private.

這樣可以防止客戶程序員通過除由我們提供的方法之外的任意方式來創建一個實例,如果不把構造器聲明為private,編譯器就會自作聰明的自動同步一個默認的friendly構造器.這種實現方法是最常見的:

/*Singleton.java*/
public class Singleton {
    
    private Singleton()
{
    }

    
    
private static Singleton INSTANCE = null;

    
//    private static Singleton INSTANCE = new Singleton();
    
    
public static synchronized Singleton getInstance(){
        
if(INSTANCE == null){
            INSTANCE 
= new Singleton();
        }

        
return INSTANCE;
    }

}

/*SingletonDemo.java 測試類*/
public class SingletonDemo {

    
/**
     * 
@param args
     
*/

    
public static void main(String[] args) {
        
// TODO Auto-generated method stub
        Singleton d = Singleton.getInstance();
        Singleton e 
= Singleton.getInstance();
        
if(d == e){
            System.out.println(
"same");
        }
else{
            System.out.println(
"not same");
        }

    }


}


運行結果:
same
這證明只創建了一個實例.


外企面試基本都會考這個東西;(java、j2ee)
本人今天上午去北京家外企遭遇到這個問題,敗北!!
希望本文章可以給那些將要去外企面試的(java、j2ee)帶來些許幫助;