Singleton

单例应该是最简单的设计模式,下面是几种不同的写法:

1.线程安全的懒汉

    public class Singleton {  
        private static Singleton instance;  
        private Singleton (){}  
        public static synchronized Singleton getInstance() {  
        if (instance == null) {  
            instance = new Singleton();  
        }  
        return instance;  
        }  
    }  

 

 2.饿汉模式

 

    public class Singleton {  
        private static Singleton instance = new Singleton();  
        private Singleton (){}  
        public static Singleton getInstance() {  
        return instance;  
        }  
    }  

 

3.枚举

 

    public enum Singleton {  
        INSTANCE;  
        public void whateverMethod() {  
        }  
    }  

 

 4.静态内部类

 

    public class Singleton {  
        private static class SingletonHolder {  
        private static final Singleton INSTANCE = new Singleton();  
        }  
        private Singleton (){}  
        public static final Singleton getInstance() {  
        return SingletonHolder.INSTANCE;  
        }  
    }  

 

 5.双重校验锁

 

    public class Singleton {  
        private volatile static Singleton singleton;  
        private Singleton (){}  
        public static Singleton getSingleton() {  
        if (singleton == null) {  
            synchronized (Singleton.class) {  
            if (singleton == null) {  
                singleton = new Singleton();  
            }  
            }  
        }  
        return singleton;  
        }  
    }  

 

posted @ 2018-03-24 20:19  SleepyDot  阅读(101)  评论(0编辑  收藏  举报