设计模式之单例

单例模式

设计模式之单例_第1张图片
单例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;
    }
}

你可能感兴趣的:(设计模式之单例)