単一例パターンまとめ


単一例パターンまとめ
        
     Java         。            。
  ,               ,      :
   :
 
Java    
public class Singleton {  
    private static final Singleton instance = new Singleton();  
    /** 
     *      new   
     */  
    private Singleton(){  
        System.out.println("init");  
    }  
    public static Singleton getInstance(){  
        return instance;  
    }  
}  
 
 
           ,    ,            ,                 。         ,              ,        ,    。
           ,           ,
   :
 
Java    
public class Singleton {  
    private static Singleton instance = null;  
    /** 
     *      new   
     */  
    private Singleton(){  
        System.out.println("init");  
    }  
    public static Singleton getInstance(){  
        if(instance == null){  
            instance = new Singleton();  
        }  
        return instance;  
    }  
}  
            ,          。  ,        ,             ,                 。
 
              ,         ,             (       ,                 )。       ,            。
   :
 
Java    
public class Singleton {  
    private static Singleton instance = null;  
    /** 
     *      new   
     */  
    private Singleton(){  
        System.out.println("init");  
    }  
    public static synchronized Singleton getInstance(){  
        if(instance == null){  
            instance = new Singleton();  
        }  
        return instance;  
    }  
}  
      synchronized,                 。                ,  ,       ,             ,synchronized               ,  ,       ,        synchronized 。
                 ,            。    :
   :
Java    
public class Singleton {  
    private static Singleton instance = null;  
    /** 
     *      new   
     */  
    private Singleton(){  
        System.out.println("init");  
    }  
    public static  Singleton getInstance(){  
        if(instance == null){  
            synchronized(Singleton.class){  
                if(instance == null){  
                    instance = new Singleton();  
                }  
            }  
        }  
        return instance;  
    }  
}  
  ,              ,             ,               ,                       ,                      ,          。
       ?       。  ,             ,    synchronied ,         Singleton 。           。           ,instance              ,                 ,          instance  ,      instance             ,    instance         。
 java5  ,   instance    volatile          ,                 。
 
  ,          ,  Java Concurrency In Practice List 16.6  :
   :
Java    
public class Singleton {  
    private static class SingletonHolder {  
        public static Singleton resource = new Singleton();  
    }  
    public static Singleton getResource() {  
        return  SingletonHolder.resource ;  
    }  
      
    private Singleton(){  
          
    }  
}  
 
      ,                     ,               ,  ,                  ,         。
  ,            , effective Java    :
   :
Java    
public class Singleton {  
    public static final Singleton INSTANCE = new Singleton();  
      
    private Singleton(){}  
      
    public void method(){  
        //...  
    }  
    public static void main(String[] a){  
        //    。  
        Singleton.INSTANCE.method();  
    }  
}  
    :
Java    
/** 
 *             
 */  
public enum Singleton {  
    INSTANCE;  
    public void method(){  
        //...  
    }  
    public static void main(String[] a){  
        //    。  
        Singleton.INSTANCE.method();  
    }  
}  
   ,      ,   volatile    ,         。
   :
Java    
public class Singleton {  
    private static volatile Singleton instance = null;  
    /** 
     *      new   
     */  
    private Singleton(){  
        System.out.println("init");  
    }  
    public static  Singleton getInstance(){  
        if(instance == null){  
            synchronized(Singleton.class){  
                if(instance == null){  
                    instance = new Singleton();  
                }  
            }  
        }  
        return instance;  
    }  
}  
 
 
  ,   spring       ,         ,spring  bean       。      app           ,          。    ,              ,          。
回転:
http://hi.baidu.com/donlian/item/b746f074655ee93e704423f0