设计模式之单例

单例模式

单例UML.png
  1. 一般私有化构造函数
  2. 通过一个静态方法来获取唯一单例对象

两个例子

静态内部类单例模式

public class Singleton{
    private Singleton(){
        //私有构造方法
    }
    
    public static Singleton getSingleton(){
        //当方法被调用之后,其实SingletonHolder的构造方法没有被调用(亲测)
        return SingletonHoler.singleton;
    }
    //静态内部类
    priveta static class SingletonHolder{
        //唯一单例
        private static final Singleton singleton = new Singleton();
    }
}

枚举模式

public enum Singleton{
    INSTANCE;//恩,这就是单例
}   

懒汉模式

public class Singleton{
    private static Singleton singleton;
    private Singleton(){
        //私有构造方法
    }
    
    public static synchronized Singleton getInstance(){
        if(singleton == null){
            singleton = new Singleton();
        }
        return singleton;   
    }
}

饿汉模式

public class Singleton{
    private static final Singleton singleton = new Singleton();
    private Singleton(){
        //私有构造方法
    }
    public static Singleton getInstance(){
        return singleton;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容