天天看点

128.单例模式简介

单例模式

单例模式:最简单,最广泛的设计模式,可以实现类的唯一实例的创建;

目的:保证类的唯一实例;

原因:避免频繁创建与销毁的类,可以有效保证性能;

核心:私有的构造函数;

【单例模式实现方案】

<1>懒汉式 缺点:线程不安全

<2>饿汉式 :线程安全 但占用资源大

class ThreadMain{
    //单例模式懒汉式
    //私有的构造方法
    private ThreadMain(){};
    //私有的静态实例对象
    private static ThreadMain dog;
    //公有静态方法,实现实例获取
    public static ThreadMain instance(){
        if(dog==null){
            dog = new ThreadMain();
        }
        return dog;
    }
}
//【单例】
//单例模式就是一个类只实例化一次;也就是只创建一次对象;
//【区别】
//上面懒汉模式只有在调用方法的时候才会创建一个对象
//下面饿汉模式是已经创建好了一个对象了,只是去获取而已;

class Single{
    //单例模式饿汉式
    //私有的构造方法
    private Single(){}
    //私有的静态实例对象,并完成实例化
    private static Single dog = new Single();
    //公有静态方法,实现实例获取
    public static Single instance(){
        return dog;
    }
}
           

<3>双重锁式

class Single{
    //双锁式单例模式
    private Single(){}
    //私有的静态实例对象,并完成实例化
    //volatitle 内存可见性 保证安全性
    //volatitle是用来修饰变量的
    private static volatile Single dog;
    //共有静态方法 实现实例获取
    public static Single instance(){
        if(dog == null){
            synchronized(Single.class){
                if(dog == null){
                    dog=new Single();
                }
            }
        }
        return dog;
    }
}