单例模式
单例模式:最简单,最广泛的设计模式,可以实现类的唯一实例的创建;
目的:保证类的唯一实例;
原因:避免频繁创建与销毁的类,可以有效保证性能;
核心:私有的构造函数;
【单例模式实现方案】
<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;
}
}