手撕单例模式

//饿汉式

public class Singelton{

        private static Singelton uniqueInstance = new Singleton();

        private Singleton (){

        }

        public static Singelton getUniqueInstance (){

                    return uniqueInstance;

        }

}


//懒汉式线程不安全

public class Singleton{

        private static Singleton uniqueInstance ;

        private Singleton(){

        }

        public static Singleton getUniqueInstance(){

                    if(uniqueInstance ==null){

                            uniqueInstace = new Singleton();

                    }

                    return uniqueInstance;

        } 

}


//懒汉式线程安全

public class Singleton{

        private static Singleton uniqueInstance ;

        private Singleton(){

        }

        public static synchronized Singleton getUniqueInstance(){

                    if(uniqueInstance ==null){

                            uniqueInstace = new Singleton();

                    }

                    return uniqueInstance;

        }

}


// 双重检验锁实现对象单例(线程安全)

pubilc class Singleton{

    private volatile static Singleton uniqueInstance;

    private Singleton(){

    }

    public static Singleton getUniqueInstance(){

               if(uniqueInstance == null){

                        synchronized(Singleton.class){

                                if(uniqueInstance == null){

                                               Singleton uniqueInstace = new Singleton ();

                                }

                        }

                }

                return uniqueInstance;

    }

}


// 静态内部类

public class Singleton{

        private static class SingleHolder{

                public static final Singleton INSATANCE = new Singleton();

        }

        private Singleton(){

        }

        public static Singleton getUniqueInstance (){

                return SingleHolder.INSTANCE;

        }

}


// 枚举

public enum Singleton {

INSTANCE;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。