package com.bjsxt.test;
import com.bjsxt.SingleTon;
/**
* @author 王韧锋QAQ
* @date 2019/3/27
* @description
*/
public class Test {
public static void main(String[] args) {
SingleTon singleTon=SingleTon.getInstance();
SingleTon singleTon1=SingleTon.getInstance();
System.out.println(singleTon==singleTon1);
}
}
package com.bjsxt;
/**
* @author 王韧锋QAQ
* @date 2019/3/27
* @description
*/
public class SingleTon {
/**
* 因为接口是静态的,所以
*/
private static SingleTon singleTon;
/**
* 什么是构造函数
* 1、方法无返回值
* 2、方法名和类名相同
*
* 什么是单例设计模式: 其他类不能直接实例化当前类的对象
* 必须对外提供实例化的接口 getInstance();
*/
private SingleTon(){}; /*构造方法*/
/**
* 因为在别的类中不能实例化当前对象
* 所以接口方法必须是 static 静态,
*
* @return
*/
public static SingleTon getInstance(){
//如果不为为空,直接返回
if(singleTon==null){
synchronized (SingleTon.class){ /*加锁 防止多线程下的读取问题*/
if(singleTon==null){ /*双重验证,有好处!!*/
singleTon=new SingleTon();
}
}
}
return singleTon;
}
}