Java设计模式之单例模式

设计模式之单例模式

介绍几种常见的单例模式

1.饿汉式单例模式

/**
 * @author ppeng
 * @date 2020/9/5 21:32
 * @description
 * 饿汉式单例模式
 */
public class Singleton1 {

    private static final Singleton1 instance = new Singleton1();

    private Singleton1(){}

    public Singleton1 getInstance(){
        return instance;
    }

}

2.懒汉式单例模式

/**
 * @author ppeng
 * @date 2020/9/5 21:35
 * @description 懒汉式单例模式(双重检索)确保对象是单例
 */
public class Singleton2 {

    private static Singleton2 instance = null;

    private Singleton2(){}

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

3.静态内部类(推荐)

/**
 * @author ppeng
 * @date 2020/9/5 21:47
 * @description  静态内部类,实例化外部类,JVM保证了类的单例
 */
public class Singleton3 {

    private Singleton3 (){}

    private static class Singleton3Hold{
        private static final Singleton3 instance = new Singleton3();
    }

    public static Singleton3 getInstance(){
        return Singleton3Hold.instance;
    }

}

4.枚举单例模式

/**
 * @author ppeng
 * @date 2020/9/5 15:47
 * @description 枚举单例模式
 */
public enum  EnumInstance {

    INSTANCE;

    public static EnumInstance getInstance(){
        return INSTANCE;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值