单例模式:
核心作用:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点
常见的单例模式:
1)单例模式----->饿汉模式
package com.bjsxt.single;
/**
* 单列模式----->饿汉模式
*特点:线程安全,效率高,没有延时加载
*/
public class SingleHungry {
//含有私有静态全局引用变量
//类加载的时候,加载这个对象(没有延时加载),因为类加载的时候创建的,所以是安全的,加载类时,天然的线程安全
private static SingleHungry singleHungry=new SingleHungry();
//私有构造器
private SingleHungry(){
}
//含有一个公共的静态引用方法,调用效率高
public static SingleHungry getInstance(){
return singleHungry;
}
}
2)单例模式------->懒汉模式
package com.bjsxt.single;
/**
* 单例模式----->懒汉模式
* 特点;线程安全,有延时加载,效率低
*/
public class SingleLazy {
//含有静态全局引用变量,值为null
private static SingleLazy singleLazy=null;
//含有私有构造器
private SingleLazy(){
}
//含有静态同步方法,引用实例(因为线程同步,因此效率低)
public static synchronized SingleLazy getInstance(){
if (singleLazy==null){
singleLazy=new SingleLazy();
}
return singleLazy;
}
}