单例模式

  以无延迟加载考虑时,枚举式单例好于饿汉式单例

  饿汉式单例模式

 1 /**
 2  * 饿汉式单例模式.无延迟加载,线程安全,(方法不同步)调用效率高
 3  * @author 小雨
 4  *
 5  */
 6 public class SingleTest03 {
 7     //类加载时,是线程安全的
 8     private static final SingleTest03 s = new SingleTest03();
 9     private SingleTest03(){}
10     public static SingleTest03 getInstance(){
11         return s;
12     }
13 }

  枚举式单例模式

 1 /**
 2  * 枚举类式单例模式.无延迟加载,线程安全,调用效率高
 3  * @author 小雨
 4  *
 5  */
 6 //枚举本身就是单例
 7 public enum SingleTest04 {
 8     INSTANCE;
 9     //也可以根据需要写方法
10     public void ss(){}
11 
12 }

  以有延迟加载考虑时,静态内部单例好于懒汉式单例

  懒汉式单例模式

 1 /**
 2  * 懒汉式单例模式.延迟加载,线程安全,(方法同步)调用效率不高
 3  * @author 小雨
 4  *
 5  */
 6 public class SingleTest01 {
 7     private static SingleTest01 s;
 8     private SingleTest01(){}
 9     public static synchronized SingleTest01 getInstance(){
10         if(s==null){
11             s = new SingleTest01();
12         }
13         return s;
14     }
15 }

  静态内部类单例模式

 1 /**
 2  * 静态内部类式单例模式.延迟加载,线程安全,(方法不同步)调用效率高
 3  * @author 小雨
 4  *
 5  */
 6 public class SingleTest02 {
 7     
 8     private SingleTest02(){}
 9     
10     //用到时才会加载内部类,并且是线程安全的
11     private static class SingleClassInstance{
12         private static final SingleTest02 instance = new SingleTest02();
13     }
14     public static SingleTest02 getInstance(){
15         return SingleClassInstance.instance;
16     }
17 }

 

posted @ 2018-06-30 09:42  努力的小雨  阅读(139)  评论(0编辑  收藏  举报