单例模式:确保一个类只有唯一实例
分类:懒汉式(私有静态对象声明,不初始化,线程不同步,需要加synchronized关键字)
饿汉式(私有静态对象声明,初始化。本身线程同步)
利弊:从资源利用率角度讲:懒汉式优于饿汉式
从速度和反应时间上讲:饿汉式优于懒汉式
代码实现:
package pattern;
/**
* 单例模式:懒汉式
* @author wkj
* 私有静态对象声明
* 私有构造方法
*
* 添加sychronized关键字,保证了线程安全。即不会出现两个线程同时访问这个实例
*/
public class Singleton1 {
private static Singleton1 single = null;
private Singleton1(){
}
public static synchronized Singleton1 getInstance(){
if(single==null){
single = new Singleton1();
return single;
}
return single;
}
}
package pattern;
/**
* 单例模式:饿汉式
* @author wkj
* 私有静态声明的初始化对象
* 私有构造器
*
* 这种方式保证了线程安全
*/
public class Singleton2 {
private static Singleton2 single = new Singleton2();
private Singleton2(){
}
public static Singleton2 getInstance(){
return single;
}
}
使用场合:1 面试的时候会问到;
2 系统的共有资源或者需要创建唯一实例的时候用到
3 Spring容器整合bean组件时,默认是创建唯一实例的