码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式---单例模式

时间:2019-11-03 22:01:09      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:检查   class   锁定   return   on()   row   懒加载   全局   vat   

单例模式

解决问题:确保一个类最多只有一个实例,并提供一个全局访问点

实现步骤:
1.构造方法私有化,(仅本类才可以调用)
2.声明一个本类对象
3.给外部提供一个静态方法获取对象实例(静态方法通过类即可调用)

两种实现方式:1.懒汉式 2.饿汉式

// 懒汉式(懒加载,延迟加载)
// 第一次调用getInst()方法时,对象被创建,程序结束后释放
public class Singleton {
    private Singleton() {
    }

    private static Singleton inst = null;

    public static Singleton getInst() {
        if (null == inst) {
            inst = new Singleton();
        }
        return inst;
    }
}
// 饿汉式
//类被加载后,对象被创建,程序结束后释放
public class Singleton {
    private Singleton() {
    }

    private static Singleton inst = new Singleton();

    public static Singleton getInst() {
        return inst;
    }
}

懒汉式 优化 解决安全问题

// 懒汉式(懒加载,延迟加载)
// 双重锁定检查 实现线程安全
public class Singleton {
    // 拒绝通过反射调用
    private Singleton() {
        if(null !=inst){
            throw new RuntimeException("此类为单例模式");
        }
    }

  //volatile关键字保证变量的唯一性
    private volatile static Singleton inst = null;

    public static Singleton getInst() {
        if (null == inst) {
            synchronized (Singleton.class) {
                if (null == inst) {
                    inst = new Singleton();
                }
            }
        }
        return inst;
    }
}

设计模式---单例模式

标签:检查   class   锁定   return   on()   row   懒加载   全局   vat   

原文地址:https://www.cnblogs.com/vixviy/p/11788993.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!