设计模式---单例模式
Posted vixviy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式---单例模式相关的知识,希望对你有一定的参考价值。
单例模式
解决问题:确保一个类最多只有一个实例,并提供一个全局访问点
实现步骤:
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;
}
}
以上是关于设计模式---单例模式的主要内容,如果未能解决你的问题,请参考以下文章